【用Python的线程来解决生产者消费问题的示例】教程文章相关的互联网学习教程文章

Python中的time.sleep和多线程问题【代码】

我在python中的time.sleep()函数遇到问题.我正在运行一个脚本,该脚本需要等待另一个程序来生成txt文件.虽然,这是一台非常古老的机器,所以当我休眠python脚本时,我遇到了其他程序无法生成文件的问题.除了使用time.sleep(),还有其他选择吗?我认为锁定线程可能会起作用,但本质上,这只是将线程锁定几秒钟的循环.在这里,我将给出一些我正在做的伪代码.While running:if filesFound != []:moveFileselse:time.sleep(1)解决方法:进行非阻...

向Python中的所有线程发送单向消息

我需要向程序中运行的每个线程发送信息,并且每个线程都必须处理该信息. 我无法使用常规队列来执行此操作,因为那样一来,一旦一个线程从队列中删除了数据,所有其他线程将无法再看到它. 实现此目标的最佳方法是什么?解决方法:一种方法是在每个线程中都有一个队列,广播信息的功能负责将消息插入每个线程的队列中. 例如,这类似于消息队列在Windows中的工作方式.每个执行GUI操作的线程都有一个关联的消息队列,与任何其他线程的消息队列无...

使用python多线程下载循环【代码】

我有一个清单.symbols = ('GGP', 'JPM', 'AIG', 'AMZN','GGP', 'rx', 'jnj', 'osip')URL = "http://www.Xxxx_symbol=%s"def fetch(symbols):try:url = URL % '+'.join(symbols)fp = urllib2.urlopen(url)try:data = fp.read()finally:fp.close()return dataexcept Exception as e:print "No Internet Access" 我正在尝试使用多线程(具有4个线程)来获取进程,而不是多进程并且不使用Twisted. Url fetch的输出文件是csv,其中包含我要删...

彻底理解Python多线程中的setDaemon与join【配有GIF示意】【图】

在进行Python多线程编程时, join() 和 setDaemon() 是最常用的方法,下面说说两者的用法和区别。 1、join () 例子:主线程A中,创建了子线程B,并且在主线程A中调用了B.join(), 那么,主线程A会在调用的地方阻塞,直到子线程B完成操作后,才可以接着往下执行。 2、setDaemon() 例子:主线程A中,创建了子线程B,并且在主线程A中调用了B.setDaemon(), 即:把主线程A设置为守护线程,这时候,要是主线程A执行结束了,就不管子线程...

python3 threading.Lock() 多线程锁的使用【代码】

import threadingimport timelock = threading.Lock() #创建锁def fun(data): try: lock.acquire(True) #锁定 print("------> fun 1:",time.strftime(%Y-%m-%d %H:%M:%S, time.localtime(time.time())),data) time.sleep(5) print("------> fun 2:", time.strftime(%Y-%m-%d %H:%M:%S, time.localtime(time.time())),data) finally: lock.release()#释放threading.Thread(target = fun, ...

Python:在while循环中使用join()的线程【代码】

我希望我的while循环在for循环中创建的所有线程最多阻塞5秒.但是,以下代码将逐个线程阻塞线程.我该如何实现自己的目标?谢谢.threads = [] while True:for 3:newThread = threading.Thread(..)threads.append(newThread)newThread.start()newThread.join(5)解决方法:您需要使用条件变量(Python中的threading.Condition).它允许等待谓词变为真.在您的情况下,谓词是所有线程均已完成工作或超时.这是创建10个线程并等待5秒超时完成的代...

python3迷宫,多线程版【代码】

直接上代码 1 #!/usr/bin/python32 #coding=GB23123 import tkinter as tk4 import threading5 import time6 import random7 import sys8 9 class Cell():10 def __init__(self, row, col):11 self.row, self.col = row, col 12 self.top, self.right, self.bottom, self.left = True, True, True, True13 self.visited = False14 def __str__(self):15 return row:{} col:{}--{} {} {} ...

Web编程中的Python线程【代码】

我在Web应用程序中面临潜在的竞争状况:# get the submissions so far from the cache submissions = cache.get('user_data') # add the data from this user to the local dict submissions[user_id] = submission# update the cached dict on server submissions = cache.update('user_data', submissions)if len(submissions) == some_number:...逻辑很简单,我们首先获取存储在Web服务器缓存中的共享字典,将提交内容(由每个请求...

python-使用单个线程时Queue.full()是否可靠?【代码】

Python的thread-safe Queue对象具有一个名为Queue.full()的有用函数,带有以下文档:Return True if the queue is full, False otherwise. If full() returnsTrue it doesn’t guarantee that a subsequent call to get() will notblock. Similarly, if full() returns False it doesn’t guarantee that asubsequent call to put() will not block.显然,在多线程方案中,多个线程在队列中放置put()项目,而多个线程在get()项目中存在...

Python如何停止线程操作【代码】

我想知道如何使用CTRL C或类似命令在控制台中停止程序.问题是我的程序中有两个线程.线程一爬网并提取一些数据,线程二以可读格式为用户显示此数据.这两部分共享相同的数据库.我这样运行它们:from threading import Thread import ResultsPresenterdef runSpider():Thread(target=initSpider).start()Thread(target=ResultsPresenter.runPresenter).start()if __name__ == "__main__":runSpider()我怎样才能做到这一点? 好的,所以我...

线程与异步网络(扭曲)Python

我正在写一个NAT的实现.我的算法如下: >数据包进来>如果是外部则对照查找表进行检查,如果是内部则添加至查找表>交换源地址并按其方式发送数据包 我一直在阅读Twisted.我很好奇Twisted是否可以利用多核CPU?假设系统有成千上万的用户,一个数据包紧接着另一个数据包.通过扭曲,可以在每个内核上同时进行查找表操作.我听说GIL无论如何都不允许这样做.也许我可以从多处理中受益. Nginix是异步的,愉快地同时为成千上万的用户提供服务.解...

opencv python多线程视频捕获【代码】

我正在尝试读取2个视频文件,并同时在单独的Windows中显示它们.这是我的代码:import threading import cv2 threadLock=threading.Lock() class myThread (threading.Thread):maxRetries=20def __init__(self, threadID, name,video_url):threading.Thread.__init__(self)self.threadID = threadIDself.name = nameself.video_url=video_urldef attemptRead(self,cvVideo):threadLock.acquire()(isRead,cvImage)=cvVideo.read()thre...

python-读取文件并执行某些操作,多线程【代码】

这个来源只是一个例子:inputf = open('input', 'r') outputf = open('output', 'a')for x in inputf:x = x.strip('\n')result = urllib2.urlopen('http://test.com/'+x).getcode()outputf.write(x+' - '+result+'\n')我想为此添加线程以同时检查一些URL.用户应每次决定要使用多少个线程.输出的顺序并不重要. 最好和最美丽的方式是什么?解决方法:我喜欢multiprocessing.pool.ThreadPool(或multiprocessing.pool.Pool) 喜欢:from ...

Python 多线程爬取站酷(zcool.com.cn)图片【代码】【图】

极速爬取下载站酷(https://www.zcool.com.cn/)设计师/用户上传的全部照片/插画等图片。 项目地址:https://github.com/lonsty/scraper 特点:极速下载:多线程异步下载,可以根据需要设置线程数 异常重试:只要重试次数足够多,就没有下载不下来的图片 (^o^)/ 增量下载:设计师/用户有新的上传,再跑一遍程序就行了 O(∩_∩)O嗯! 支持代理:可以配置使用代理环境:python3.6及以上1. 快速使用 1) 克隆项目到本地 git clone https...

Python中的简单线程示例【代码】

我对Python中的线程有疑问(我承认,我是这个主题的新手). 我有对象,我想在方法part1()中生成数字列表(具有一些随机时间间隔),并在part2()中生成-尽快打印所有生成的数字. 这是我的代码:import random import time from threading import Threadclass GenerateRand:def __init__(self):self.h = []def part1(self):while True:r = random.choice(range(9))self.h.append(r)print "Rand in list:", self.htime.sleep(random.randint(...