因此,我有一个pyhthon应用程序,我正在尝试模拟队列排队系统。它导入一个库并调用该库,特别是psycopg2。示例代码如下
import threading,queue,psycopg2
q = queue.Queue()
def workerChecker():
while True:#Keeps the thread always checking for new things in queue
item = q.get()
addItemToDb(item) <------This part
q.task_done()
threading.Thread(target=workerChecker, daemon=True).start()
def addItemToDb(item):
#Do something and use psycopg2 to insert item to db here
所以我似乎无法在网上找到明确的答案,addItemToDb中的代码将在哪个线程上运行。
更具体地说,函数addItemToDb中的所有代码是否都将被限制在与workerChecker相同的线程中执行?鉴于它使用导入的库。
任何帮助或帮助将不胜感激...
答案 0 :(得分:1)
addItemToDb
中的代码将仅限于运行workerChecker
的线程,只要它仅由该函数调用即可,但可以在主线程中的该线程之外的任何地方或任何地方使用它。您创建的其他线程。
如果要确保只有workerChecker
可以访问该功能,可以在addItemToDb
内定义workerChecker
def workerChecker():
def addItemToDb(item):
# addItemToDb definition
pass
while True:
item = q.get()
addItemToDb(item)
q.task_done()