python中的多线程 – 阻止在后台运行的调用
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了python中的多线程 – 阻止在后台运行的调用,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1922字,纯文字阅读大概需要3分钟。
内容图文
![python中的多线程 – 阻止在后台运行的调用](/upload/InfoBanner/zyjiaocheng/800/5d366d72404b49bf8976175853b20a56.jpg)
我最近一直在研究一个程序(正如你可能从我之前提出的问题中看到的那样)而且我在理解和实现多线程方面遇到了麻烦.
我按照教程(binary tides)设置了UDP服务器,效果很好.然而,我遇到的问题是,当我在新线程上创建阻塞UDP套接字时,我在主程序中最初创建线程的代码不起作用.这是我的一些代码:
main.py:
from thread import*
import connections
start_new_thread(networkStart.startConnecton())
print 'This should print!'
networkStart.py:
def startConnecton():
userData.s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
print 'Socket created'
try:
userData.s.bind((HOST, PORT))
except socket.error, msg:
print 'Bind failed. Error code: ' +str(msg[0]) + 'Message' +msg[1]
sys.exit()
print 'Socket bind complete'
userData.s.listen(10)
# Set the socket to listening mode, if there are more than 10 connections waiting reject the rest
print 'Socket now listening'
#Function for handling connections. Each new connection is handled on a separate thread
start_new_thread(connections.connectionListen())
connections.py:
def connectionListen():
while 1:
print 'waiting for connection'
#wait to accept a connection - blocking call
conn, addr = userData.s.accept()
userData.clients += 1
print 'Connected with ' + addr[0] + ':' + str(addr[1])
#start new thread takes 1st argument as a function name to be run, second is the tuple of arguments
start_new_thread(users.clientthread ,(conn, userData.clients))
我基本上只是希望能够在新线程上调用startConnection函数后在main.py中执行任何代码(即,在此实例中打印字符串).
我已经在这个程序上苦苦挣扎了很长一段时间,Python对我来说是新手,我发现它非常具有挑战性.我假设我必须在我实现多线程的方式上犯一些错误,任何帮助都会非常感激!
解决方法:
start_new_thread接收函数和参数列表,但您直接使用函数调用:start_new_thread(networkStart.startConnecton()).
但是,我建议您使用具有更高抽象级别的线程模块(the official documentation does so).
import threading
import connections
threading.Thread(target=networkStart.startConnecton).start()
print 'This should print!'
内容总结
以上是互联网集市为您收集整理的python中的多线程 – 阻止在后台运行的调用全部内容,希望文章能够帮你解决python中的多线程 – 阻止在后台运行的调用所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。