- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
首先我必须提一下,我不是程序员,而是机械工程师,所以如果我误解了某些内容或说了一些废话,请不要钉死我。
我想编写一个Python代码来“模拟”现实生活中的问题。现实生活中的问题类似于 FIFO 队列,其中对象从不同的站获取,并在那里花费一些时间,然后返回到队列。
我知道我需要的是编写一个异步程序,因为我有一个函数将对象放入队列(假设每 15 秒一次),然后我有一些站只从该队列中取出一个对象,然后再次处理它一段时间(简单的计时器和打印“嗨,我正在处理对象 x,将在:分钟内返回它”。
我不确定是否可以使用线程来做到这一点?如果我有 100 个异步工作的站,是否可以启动 100 个线程?因为据我了解每个线程都应该有一个计时器?
我会要求给我一点插入,以最简单的方向来解决它,它不一定要漂亮,但对我来说实用且简单。
提前感谢您的每一个想法!此致,毫米。
最佳答案
当然,您可以使用线程同时运行多个进程。
你必须创建一个像这样的类:
from threading import Thread
class Work(Thread):
def __init__(self):
Thread.__init__(self)
self.lock = threading.Lock()
def run(self): # This function launch the thread
(your code)
如果你想同时运行多个线程:
def foo():
i = 0
list = []
while i < 10:
list.append(Work())
list[i].start() # Start call run() method of the class above.
i += 1
如果您想在多个线程中使用同一个变量,请小心。您必须锁定此变量,以便它们不会同时到达此变量。像这样:
lock = threading.Lock()
lock.acquire()
try:
yourVariable += 1 # When you call lock.acquire() without arguments, block all variables until the lock is unlocked (lock.release()).
finally:
lock.release()
在主线程中,您可以在队列上调用 join() 来等待所有挂起的任务完成。
这种方法的优点是您无需创建和销毁线程,而这会带来很大的成本。工作线程将连续运行,但当队列中没有任务时将进入休眠状态,使用零 CPU 时间。
希望对你有帮助。
关于python - 现实生活过程的异步、多线程模拟,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52056924/
笙歌 痞性. 剩余 青怏 洒脱 现实 搁浅° 软萌 路途 娼妓 离骚 逐你 微尘 迷魂 ▼ 扎心 堇夏 残年っ ╭淡妆╮ 24K.纯疯 隐痛
我正在尝试不费吹灰之力地实现完全有效的持久性无知。不过我有很多问题: 最简单的选项 这真的很简单——可以像在 SOA 中那样使用 Spring Data 注释对实体进行注释(但让它们真正执行逻辑)?除
我想完成一项简单的任务。 我在可变宽度容器中有一个图像。 容器的宽度可以为 300、400、700 或 900 像素。这是通过媒体查询完成的图像应占据该容器的所有宽度。所以它也将是 300、400、7
我在使用 Storyboards AutoRotation 和 iPhone 时遇到问题。我已经将一个非常简单的项目与 3 个 View Controller 放在一起,并将其上传到 gitHub 以
我是一名优秀的程序员,十分优秀!