首页 > 编程语言 >python多线程

python多线程

时间:2023-10-10 10:25:35浏览次数:46  
标签:thread python datetime current threading 线程 threads 多线程

import datetime
import threading
from time import sleep

# 创建一个信号量,限制最多同时运行2个线程
semaphore = threading.Semaphore(2)

# 创建一个线程锁
threadLock = threading.Lock()


def worker(i):
    with semaphore:
        current_datetime = datetime.datetime.now()
        print(f"【{current_datetime}】【{i}】Thread {threading.current_thread().name} is working\n")
        # 在这里获取线程锁,确保只有一个线程可以执行以下代码
        with threadLock:
            print(f"Thread {threading.current_thread().name} has the lock\n")
            # 在这里添加你想要保护的临界区代码
            sleep(2)  # 休眠模拟临界区的操作
        # 离开`with threadLock`块后,线程锁会自动释放


# 创建多个线程
threads = []
for i in range(5):
    thread = threading.Thread(target=worker, args=(i,))
    threads.append(thread)
    thread.start()

# 等待所有线程完成
for thread in threads:
    thread.join()

print("All threads have finished.")

 

标签:thread,python,datetime,current,threading,线程,threads,多线程
From: https://www.cnblogs.com/nicole-zhang/p/17753921.html

相关文章

  • python接口自动化之request请求,如何使用 Python调用 API?
    Python实战|如何使用Python调用API一、HTTP 请求HTTP 请求是在 HTTP 协议下的一种数据格式,用于向服务器发送请求,其通常由请求行、请求头和请求体三部分构成,请求头和请求体之间用空行隔开,其中各部分包含的信息如下:请求行 (Request Line):包括请求方法 (GET请求、POST请......
  • [903] Concatenate (merge) multiple dictionaries in Python
    Toconcatenate(merge)multipledictionariesinPython,youcanusevariousmethodsdependingonyourPythonversionandpreferences.Herearesomecommonapproaches:1.Usingtheupdate()Method:Youcanusetheupdate()methodofdictionariestomergeo......
  • python的pip包国内源下载安装
    pipinstall包-ihttps://pypi.tuna.tsinghua.edu.cn/simple/--trusted-hostpypi.douban.com--命令镜像--直接使用这个安装项目中的依赖,国内网站pipinstall-rrequirements.txt-ihttps://pypi.tuna.tsinghua.edu.cn/simple/--trusted-hostpypi.douban.compipinstal......
  • python获取文件的最后一行
    #_*_coding:utf-8_*_importnumpyasnpimportosimportsysdeflistDirectory(path,list_path,filetype):forfileinos.listdir(path):file_path=os.path.join(path,file)ifos.path.isdir(file_path):continueelif......
  • Python装饰器(一次搞清楚)
    最重要的情绪管理是要明白,没有一种情绪是不应该的一、简单装饰器Python装饰器是一种语法糖,用于在不改变原有函数代码的情况下,为函数添加额外的功能。装饰器本质上是一个函数,它接收一个函数作为参数,并返回一个新的函数,通常使用@语法糖来应用装饰器。1.装饰器本质是一个函数,可......
  • python练习题(一)
    算法题1.计算1-100之间所有偶数的和#定义一个变量用来保存最后的累加和total_even_sum=0#从1到100的数fornuminrange(1,101):#判断是否为偶数ifnum%2==0:total_even_sum+=numprint("偶数和是:",total_even_sum)2.计算1-100的和#......
  • python练习题(二)
    文件操作1.读取一个文本文件,打印文件内容到控制台。defprint_file_content(file_path):try:withopen(file_path,'r')asfile:content=file.read()print(content)exceptExceptionase:print(f"没有找到文件:{e}"......
  • 2023-02-18-我写了一个python库dumb_meun
    +++title="我写了一个python库:dumb_meun"description=""date=2023-02-18T16:19:07+08:00featured=falsecomment=truetoc=truereward=truecategories=[""]tags=["python"]series=[]images=[]+++我之......
  • 2023-02-18-python打包成exe
    +++title="如何把Python程序打包成exe"description=""date=2023-02-18T22:27:09+08:00featured=falsecomment=truetoc=truereward=truecategories=[""]tags=["python"]series=[]images=[]+++我需要把我......
  • 2023-02-18-python打包
    +++title="Python打包和上传到pypi"description=""date=2023-02-18T21:59:09+08:00featured=falsecomment=truetoc=truereward=truecategories=[""]tags=["python"]series=[]images=[]+++教程用pyth......