为什么Python的multiprocessing.Queue不会阻塞

I am new to Python, but I want to write a multiproccesing program that uses multiprocessing.Queue as Go's channel. However, it seems that multiprocessing.Queue.put(, block=True) doesn't block as documented.

Here is my Python example program:

import multiprocessing
import select
import time


def f(q):
    while True:
        time.sleep(1)
        print("Put")
        q.put("hello world")


if __name__ == "__main__":
    q = multiprocessing.Queue(maxsize=0)
    f(q)

I expect that it will print only one "Put" and blocks forever. However, what I got is that it prints "Put" repeatedly.

Here is the Go program I think almost equivalent, except that goroutine is a green thread but not a process.

package main

import (
    "fmt"
    "time"
)

func main() {
    ch := make(chan int)
    for {
        time.Sleep(time.Second)
        fmt.Println("Put")
        ch <- 1
    }
}

When I type go run csp.go, it prints only one "Put" and the Go runtime prompts that the program is in deadlock.

Why multiprocessing.Queue.put() doesn't block?

doukuipai8544
doukuipai8544 是的,maxsize=0不会像Go中那样创建无缓冲通道。
一年多之前 回复
dongtongjian3127
dongtongjian3127 是的,maxsize=1有效!谢谢!
一年多之前 回复
dongtaigan1594
dongtaigan1594 感谢@SteffenUllrich指出这一点!我将程序更改为q=multiprocessing.Queue(maxsize=1),该程序仅打印两个“Put”。
一年多之前 回复
duansaoguan7955
duansaoguan7955 仅当队列中没有可用的插槽时,它才看起来像Queue.put()。您是否尝试使用Queue(maxsize=1)?
一年多之前 回复
dongwang6837
dongwang6837 multiprocessing.Queue(maxsize=0)-从阅读文档开始,将创建一个无限大小的队列:“如果maxsize小于或等于零,则队列大小为无限”。仅当队列中没有位置但大小无限时,才存在阻塞。
一年多之前 回复

1个回答

Give a queue length of 1 and it will block as required

   Python 2.7.12 (default, Nov 12 2018, 14:36:49) 
    [GCC 5.4.0 20160609] on linux2
    Type "help", "copyright", "credits" or "license" for more information.
    >>> import multiprocessing
    >>> import select
    >>> import time
    >>> 
    >>> q = multiprocessing.Queue(maxsize=1)
    >>> q.put(9)
    >>> q.put(10)  // blocking here, have to ctrl-c to escape
    ^CTraceback (most recent call last):
      File "<stdin>", line 1, in <module>
      File "/usr/lib/python2.7/multiprocessing/queues.py", line 101, in put
        if not self._sem.acquire(block, timeout):
    KeyboardInterrupt
    >>> 
duanjianshen4871
duanjianshen4871 是。 谢谢! 在我看到@Steffen Ullrich的注释stackoverflow.com/questions/53893549/…之后,我意识到maxsize = 0的默认值指示缓冲区大小是无穷大而不是0,这是Go约定。
一年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
multiprocessing 中使用QUEUE、Manager的共享和锁问题

1、父进程S建立2个子进程M,N,由两个子进程分别建立2个子进程M1,M2及N1,N2。 S--M--M1 --M2 --N--N1 --N2 我再父进程S里建立的QUEUE传给M和N,再传给再下一级M1、M2、N1、N2,最下面的几个子进程之间能通信吗,还是必须用Manager.QUEUE? 2、用MANAGER的QUEUE(put/get),dict,list(append)时需要加锁吗?

python multiprocessing 问题

最近写一个简单的web后端项目(结构简单,并发不高,但是处理逻辑稍复杂),在某一个url路由的响应函数(Run)中,处理逻辑是每次调用到Run,都启动一个子进程来处理逻辑,子进程完了之后通过multiprocessing.Queue将结果反馈给父进程(父进程收到消息表示子进程完成任务并准备结束了)。 ```python Run函数中的流程: 1. q = Queue() #创建queue 2. p = Process(target=run_child,args=(q)) #创建处理业务的子进程,run_child函数耗时较长 3. parent_listen_q(p,q) #这个函数中以gevent协程的方式不停循环从q中get消息,同时join子进程 parent_listen_q函数流程: def _inner(): 1. while True: #循环收消息 msg = q.get_nowait(q) if msg: break gevent.sleep(0.01) 2. handle(msg) #处理消息 3. p.join() #避免僵尸 gevent.spawn(_inner) #协程 ``` 这个逻辑看起来没有问题,并且很简洁(连queue都是每个子进程分开的互不影响),但是问题就出在每个子进程一个queue上。 一个场景是: 用户接连调用了两次Run,期间间隔很短,子进程的生命周期长于这个间隔。会启动了两个子进程,记为c1,c2,父进程记为p。 第一次调用Run的时候,关系是:父p,子c1,队列q1。 第二次调用Run的时候,关系是:父p,子c2,队列q2,但此时c1还未结束,父进程的parent_listen_q协程也还在运行中,c2会继承这个运行的协程, 导致的问题是有两个进程(p,c2)同时在循环从q1中get数据,当后续c1结束向q1中发消息时,有可能消息被c2抢先取到,而真正关心这个消息的p却收不到消息了,这样就出了问题。 出现这个问题的根本原因有两个: 1. fork子进程会继承父进程的栈空间,导致了协程也被继承下来了。 2. queue底层其实也是基本的ipc对象,看Queue的代码是pipe实现的,在fork的时候也会被继承,并且,如果不继承的话反而实现不了ipc了。 所以,上面这种结构的处理逻辑对这个问题就不是蛮好解决了,看起来不能给queue设置一个“close_on_exec”的标志。 我在这里暂时用了一个很挫的方法曲线解决了这个问题(确实挺搓,因为不是避免,而是修补): ```python 修补后的parent_listen_q函数流程: def _inner(): 1. while True: msg = q.get_nowait() if p._parent_pid != os.getpid(): #如果是子进程 if msg: q.put_nowait(msg) #如果发现被子进程不小心收错了,重新塞回去(汗。。) return #直接结束这个冒牌货协程 if msg: break gevent.sleep(0.01) 2. handle(msg) 3. p.join() #如果在非父进程中,这行会报异常 gevent.spawn(_inner) ``` 在这里向各位大神请赐教,不知有没有更优雅的方法解决这个问题,本人新手,求带。

mac 系统中 python 的 multiprocessing模块的使用问题

multiprocessing中使用Queue,在给进程传递队列参数时系统报错。 代码如下,使用python3.8编译。只要传输Queue定义的参数就报错, 报错信息如下。 ![图片说明](https://img-ask.csdn.net/upload/202002/25/1582615850_971494.png) ``` import multiprocessing def download_from_web(q): """下载数据""" # 模拟从网上下载的数据 data = [11, 22, 33, 44] # 向队列中写入数据 for temp in data: q.put(temp) print("下载器已经下载完了数据并且存入到队列中") def analyse_data(q): """数据处理""" waiting_analyse_data = list() # 从队列中获取数据 while True: data = q.get() waiting_analyse_data.append(data) if q.empty(): break # 模拟数据处理 print(waiting_analyse_data) def main(): # 1. 创建一个队列 q = multiprocessing.Queue() # 2. 创建多个进程,将队列的引用当做实参进行传递到里面 p1 = multiprocessing.Process(target=download_from_web, args=(q,)) p2 = multiprocessing.Process(target=analyse_data, args=(q,)) p1.start() p2.start() if __name__ == "__main__": main() ```

python multiprocessing特殊问题~ 无法使用

最基础的pool无法使用 我进去看了下好像是threading时 timeout 一直无法出来 windows任务管理器 有出进程 但是就是不执行.. from multiprocessing import Pool def f(x): return x*x if __name__ == '__main__': with Pool(5) as p: print(p.map(f, [1, 2, 3])) 或者p.apply_async也不行 里面选用的函数中 print都无法输出 就是没进入到函数里面 连这个.都没有办法输出 唯一特殊 电脑是2个cpu..合起来的工作站 一共20核心 其他软件里面调用过多线程没问题(测试数据) 但是python这个代码却执行不了...

多进程获得函数返回值问题:get()函数会导致multiprocessing.pool.apply_async 子进程不执行,是什么机理?

想通过使用multiprocessing.pool.apply_async多进程实现一个小功能,在 a[]后不断增加func()的返回值。但是在使用apply_async().get()函数后,子进行并未执行,程序仍然按照顺序执行,运行时间也未减少,约4秒,但是在仅运行apply_async()打印时,程序运行时间几乎是按进程数减少的,约2秒。 如何才能实现多进程获取返回值? 求教各位大神! ``` import time start = time.time() def func(args1): time.sleep(1) print(args1) return (args1 ** 2) from multiprocessing import Pool if __name__ == "__main__": pool = Pool(2) a = [] for i in range(4): a.append(pool.apply_async(func, (i,)).get()) pool.close() pool.join() print(a) end = time.time() print('Running time: %.2f Seconds' % (end - start)) ```

利用python中的mangers和queue模块做一个两个电脑通信的demo,却说没有register这个属性

talkDemo_1 ``` import queue,time from multiprocessing.managers import BaseManager from datetime import datetime message1 = queue.Queue() message2 = queue.Queue() class QueueManager(BaseManager): pass def get_message1(): global message1 return message1 def get_message2(): global message2 return message2 QueueManager.register('message_queue_1',callable = get_message1) QueueManager.register('message_queue_2',callable = get_message2) def startManager(host,port,key): manager = QueueManager(address = (host,port),authkey = key) manager.start() return manager if __name__ == '__main__': manager = startManager('127.0.0.1', 5000, b'abc') mess1 = manager.message_queue_1() mess2 = manager.message_queue_2() #mess1.put(1) #mess2.get() name = input('请输入您的昵称:') print('可以开始通信了!') while(True): inform = input() if inform == 'over': mess1.put(inform) time.sleep(5) break inform = '%s\n\t%s:%s' % (datetime.now(),name,inform) mess1.put(inform) print(inform) getInform = mess2.get() print(getInform) manager.shutdown() print('结束通话') ``` talkDemo_2.py ``` import queue from multiprocessing.managers import BaseManager from datetime import datetime def QueueManager(BaseManager): pass QueueManager.register('message_queue_1') QueueManager.register('message_queue_2') def connectManager(addr,port,key): manager = QueueManager(address = (addr, port), authkey = key) manager.connect() return manager if __name__ == '__main__': addr = '127.0.0.1' print('connect to %s...' % addr) manager = connectManager(addr,5000,b'abc') mess1 = manager.message_queue_1() mess2 = manager.message_queue_2() #mess1.get() #mess2.put(1) name = input('请输入您的昵称:') print('已连接,可以开始通信了!') while(True): getInform = mess1.get() print(getInform) if getInform == 'over': break inform = input() inform = '%s\n\t%s:%s' % (datetime.now(),name,inform) print(inform) mess2.put(inform) print('通话结束') ``` 运行talkDemo_2.py的时候,报错Traceback (most recent call last): File "E:\Python_program\practice\talkDemo_2.py", line 8, in <module> QueueManager.register('message_queue_1') AttributeError: 'function' object has no attribute 'register'

请教python调用multiprocessing使用多进程修改全局变量问题

## # 问题: 为了提高效率需要调用multiprocessing,然而发现在调用时无法修改全局变量。 请教如何达到使用多进程修改全局变量? 测试代码如下: ``` import multiprocessing a = {} def test(number): global a a[str(number)] = '数字' + str(number) if __name__ == '__main__': for i in range(3): p = multiprocessing.Process(target=test, args=(i,)) p.start() print(a) ``` 最后打印的结果是:{} 而不是{'0': '数字0','1': '数字1','2': '数字2'}

Python3 多进程 向子进程传参数Queue,子进程无法运行

``` #!/usr/bin/python from multiprocessing import Pool, Queue import time def Foo(i, q): print("sub", i) if __name__ == "__main__": q = Queue() pool = Pool(5) for i in range(10): pool.apply_async(func = Foo, args = (i, q, )) pool.close() pool.join() print('end') ``` 向子进程传了一个队列,子进程就全部无法运行。如果传一个list,传一个数都没问题。请大神指点指点。 ![图片说明](https://img-ask.csdn.net/upload/201812/28/1545996695_326091.png)

python多进程中队列不空时阻塞,求解为什么?

rt,我用python的multiprocessing模块写一个多进程生产消费程序, 消费者将消息放入 queue, 生产者从queue中get。运行时发现生产者可以put进queue, 打印queue.qsize() 正常, 消费者进程打印queue.qsize()和生产者相同,但是从队列中get()的时候就阻塞了住了, 判断empty()时也显示队列为空, 这是为什么, 跪求大神指导

windows上用python学习multiprocessing模块的进程池,程序创建了进程池,但是却没用进入子进程?

1.问题描述: 看网课学习python,昨天学到进程池和进程之间的通信。 看老师的视频时运行正确,自己确实没出想象中的效果。 在windows上用python学习multiprocessing模块的进程池,在pycharm中程序创建了进程池,但是却没用进入子进程?但是在命令窗口去可以进入子进程。 代码: ``` # 测试进程池的使用 from multiprocessing import Pool import time, os def work(num): print('咋了?', end='\t') print(5*num) time.sleep(1) if __name__ == "__main__": print('Parent process %s.' % os.getpid()) # 定义一个进程池,设置最大进程为4,默认为cpu核心数 po = Pool(4) for i in range(10): # 调用apply_saync()方法,apply_saync选择要调用的目标,以及将目标需要的参数 # 以元组形式传递,每次循环都会用空出来的进程去调用目标。 po.apply_async(func=work, args=(i,)) # 关闭进程池,只准许进程从进程池出来,不准进入进程池 po.close() # 主进程等待子进程结束,必须写再close后。 po.join() print('子进程结束') ``` 然后在pycharm的运行结果是既没有报错也没有执行子进程的指令 图是这样的: ![图片说明](https://img-ask.csdn.net/upload/201901/16/1547605427_367407.png) 为了给各位大佬提供更多信息,我在循环那debug了下,尽管我目前还看不懂。 ![图片说明](https://img-ask.csdn.net/upload/201901/16/1547605634_254497.png) 在Windows的命令窗口下直接运行结果就有了。貌似得到我的结果了。 ![图片说明](https://img-ask.csdn.net/upload/201901/16/1547605512_956498.png) 说明:昨天也查了半天资料,说的都是加if __name__ == "__main__": 来保证正常,可是我还是出问题了! 请各位大佬指点迷津,拯救一个初学者吧。

python中如何深层复制queue对象?

如题 直接用赋值语句得到的是引用,copy方法也是得到引用。deepcopy()报错。 除了把队列中的元素全部get出来,再put进去的方法外 ,还有什么好方法吗?

python2.7 多进程multiprocessing报错

Traceback (most recent call last): File "<string>", line 1, in <module> File "C:\Anaconda\lib\multiprocessing\forking.py", line 380, in main prepare(preparation_data) File "C:\Anaconda\lib\multiprocessing\forking.py", line 488, in prepare Traceback (most recent call last): File "<string>", line 1, in <module> assert main_name not in sys.modules, main_name AssertionError: operator File "C:\Anaconda\lib\multiprocessing\forking.py", line 380, in main prepare(preparation_data) File "C:\Anaconda\lib\multiprocessing\forking.py", line 488, in prepare Traceback (most recent call last): File "<string>", line 1, in <module> File "C:\Anaconda\lib\multiprocessing\forking.py", line 380, in main assert main_name not in sys.modules, main_name AssertionError: operator Traceback (most recent call last): File "<string>", line 1, in <module> prepare(preparation_data) File "C:\Anaconda\lib\multiprocessing\forking.py", line 488, in prepare File "C:\Anaconda\lib\multiprocessing\forking.py", line 380, in main prepare(preparation_data) File "C:\Anaconda\lib\multiprocessing\forking.py", line 488, in prepare assert main_name not in sys.modules, main_name AssertionError: operator assert main_name not in sys.modules, main_name AssertionError: operator 源码 ``` first=sh_100.start second=sh_200.start third=sh_300.start fourth=sh_400.start if __name__=='__main__': p1=Process(target=first) p2=Process(target=second) p3=Process(target=third) p4=Process(target=fourth) p1.start() p2.start() p3.start() p4.start() ```

selenium+python 多进程一直报错

#coding=utf-8 import unittest, time, os, multiprocessing from email.mime.text import MIMEText import HTMLTestRunner def EEEcreatsuite1(): casedir=[] listaa=os.listdir('D:\\eclipes_case\\test_case\\src\\') print listaa for xx in listaa: if "test_case" in xx: casedir.append(xx) print casedir suite=[] for n in casedir: testunit=unittest.TestSuite() discover=unittest.defaultTestLoader.discover(n,pattern ='start_*.py',top_level_dir=n) print discover for test_suite in discover: for test_case in test_suite: testunit.addTests(test_case) suite.append(testunit) return suite,casedir def EEEEEmultiRunCase(suite,casedir): now = time.strftime('%Y-%m-%d-%H_%M_%S',time.localtime(time.time())) filename = 'D:\\eclipes_case\\test_case\\src\\test_report\\'+now+'result.html' fp = file(filename, 'wb') proclist=[] s=0 for i in suite: runner = HTMLTestRunner.HTMLTestRunner( stream=fp, title=u'测试报告', description=u'用例执行情况:' ) proc = multiprocessing.Process(target=runner.run(i),args=(i,)) proclist.append(proc) s=s+1 for proc in proclist: proc.start() for proc in proclist: proc.join() fp.close() if __name__ == "__main__": runtmp = EEEcreatsuite1() EEEEEmultiRunCase(runtmp[0],runtmp[1]) 报错: Method=test_youdao_search>]>]>]> . Time Elapsed: 0:00:34.414000 . Time Elapsed: 0:00:13.649000 Process Process-1: Traceback (most recent call last): File "C:\Python27\lib\multiprocessing\process.py", line 258, in _bootstrap self.run() File "C:\Python27\lib\multiprocessing\process.py", line 114, in run self._target(*self._args, **self._kwargs) TypeError: '_TestResult' object is not callable Process Process-2: Traceback (most recent call last): File "C:\Python27\lib\multiprocessing\process.py", line 258, in _bootstrap self.run() File "C:\Python27\lib\multiprocessing\process.py", line 114, in run self._target(*self._args, **self._kwargs) TypeError: '_TestResult' object is not callable

python 协程方法无法完整执行

使用aiohttp按照案例添加了一个后台任务, 新建的函数无法正常执行 代码如下 ``` from multiprocessing import shared_memory async def run(shm_name: str, web_sockets: list): print("1") print("2") message = shared_memory.ShareableList(name=shm_name) print("3") ``` 比如这个代码 只会打印出1 2 后面的3是不会输出的 调用multiprocessing.Queue也会出现类似情况 由于我个人姿势缺乏.debug也没法弄明白导致这个问题的原因是什么. 请各位大神帮帮我.

python运用多进程无法开启movidius神经棒

我正在做一个项目其中运用了神经棒,我想用运用多进程将神经棒与另外一个程序进行通讯 ,但是我发现用多进程的时候,他总是显示无法开启神经棒不知道是什么原因。有没有大神 能帮忙解决下。 主程序如下: ** from move import Move from hh import Detect from capture1 import Capture from multiprocessing import Process, Queue import time import cv2 q1 = Queue() q2 = Queue() def CAP_DETC(q1,q2): cap = Capture() cap_detc = Detect() while True: cap.save_img() img = cv2.imread('images/1.jpg') time.sleep(0.1) if q2.get(): p = cap_detc.preprocess_image(img) m = cap_detc.predict(p) n = cap_detc.judge(m) q1.put(n) def MOVE(q1,q2): move = Move() q2.put(1) while True: if q1.get() == 1: move.turn_right() elif q1.get() == 2: move.turn_left() elif q1.get() == 0: move.go_forward() elif q1.get() == 3: move.stop() move.turn_left() else : print 'Something is wrong!' move.stop() p1 = Process(target=CAP_DETC,args=(q1,q2)) p2 = Process(target=MOVE,args=(q1,q2)) p1.start() p2.start() p1.join() p2.join()** 在Terminal显示的错误: Process Process-1: Traceback (most recent call last): File "/usr/lib/python2.7/multiprocessing/process.py", line 258, in _bootstrap self.run() File "/usr/lib/python2.7/multiprocessing/process.py", line 114, in run self._target(*self._args, **self._kwargs) File "main_2.py", line 13, in CAP_DETC cap_detc = Detect() File "/home/pi/robot/hh.py", line 21, in __init__ self.device.OpenDevice() File "/usr/local/lib/python2.7/dist-packages/mvnc/mvncapi.py", line 147, in OpenDevice raise Exception(Status(status)) Exception: mvncStatus.ERROR ^CTraceback (most recent call last): File "main_2.py", line 46, in <module> p2.join() File "/usr/lib/python2.7/multiprocessing/process.py", line 145, in join res = self._popen.wait(timeout) File "/usr/lib/python2.7/multiprocessing/forking.py", line 154, in wait return self.poll(0) File "/usr/lib/python2.7/multiprocessing/forking.py", line 135, in poll pid, sts = os.waitpid(self.pid, flag) KeyboardInterrupt Process Process-2: Traceback (most recent call last): File "/usr/lib/python2.7/multiprocessing/process.py", line 258, in _bootstrap self.run() File "/usr/lib/python2.7/multiprocessing/process.py", line 114, in run self._target(*self._args, **self._kwargs) File "main_2.py", line 27, in MOVE if q1.get() == 1: File "/usr/lib/python2.7/multiprocessing/queues.py", line 117, in get res = self._recv() KeyboardInterrupt 如果我采用多线程的方式的话,它是可以进行的。一开启进程就不可以了希望有大神帮忙解决下。

Python 在tkinter.mainloop中开线程,为什么又出现一个新窗口?

def make_app(): app=Tk() Listbox(name='listb').pack() Button(text="run",command=run_script).pack() Button(text="stop",command=stop_script).pack() return app def run_script(): p=multiprocessing.Process(name="print", target=run_func) p.start() def ui_make_list(): listb=app.children["listb"] for f in os.listdir(): listb.insert(END,f) def stop_script(): for p in multiprocessing.active_children(): if p.name == "print": p.terminate() def run_func(): list = app.children["listb"] path = list.get(ACTIVE) print(path) run_path(path) app = make_app() app.after(100, ui_make_list) app.mainloop() 运行时会先出现一个窗口,点击run按钮开启新线程后,又出现一个窗口。关掉第二个窗口后报错: KeyError: 'listb'

python多进程不退出问题怎么解决

代码如下: from multiprocessing import Manager, Pool def num1(): global num for i in range(1000): num += 1 q.put(num, False) q.put(None) def num2(): global num while True: if not q.empty(): result = q.get() if result is None: break else: print(result) print(1111111111111) if __name__ == '__main__': num = 0 q = Manager().Queue() p = Pool(5) for i in range(1): p.apply_async(num1) for i in range(3): p.apply_async(num2) p.close() p.join() ![图片说明](https://img-ask.csdn.net/upload/201912/13/1576201544_525030.png) while True循环退出了,但是进程没有退出。

Python如何实现多线程与多进程的配合工作?

#!/usr/bin/env python #coding=utf8 import multiprocessing import threading import threadpool import time import re import os ''' 想法: 开启了11个进程,第一个进程是以多线程方式运行,再通过进程间通信来使其他进程工作. ''' def put_test(str1): # 处理出函数名,开启多线程 print str1, q.put(str1) time.sleep(1) def get_test(): # 进程池除第一个以外的进程 print ' 5' print q.qsize(),os.getpid() print q.get(True,1) time.sleep(1) ############################################################### if __name__=='__main__': multiprocessing.freeze_support() q=multiprocessing.Queue(maxsize = 10) # 线程池 data=range(1,11) pool=threadpool.ThreadPool(10) requests=threadpool.makeRequests(put_test,data) [pool.putRequest(req) for req in requests] pool.wait() # 进程池 pool2 = multiprocessing.Pool(processes=3) for var in range(1,11): # 20个进程 pool2.apply_async(get_test,[]) pool2.close() pool2.join() print "size:",q.qsize() ``` ``` 这段代码出问题了,求助。

为什么进程间无法实现通信。

我使用queue进行进程间的通信,但是put进去的数据在另一个进程中接收不到 ``` class Control_system(QMainWindow, Ui_Control_system): socketQueue = multiprocessing.Queue() def __init__(self, parent=None): super().__init__(parent) self.setupUi(self) self.p1 = multiprocessing.Process(target=Control_system.connect, args=(self.socketQueue,)) self.p1.start() self.p3 = multiprocessing.Process(target=Control_system.client, args=(self.socketQueue,)) self.p3.start() @staticmethod def connect(queue): ip_port = ("192.168.1.251", 8880) s = socketserver.ThreadingTCPServer(ip_port, MyServer) s.serve_forever() def client(self): print(Control_system.socketQueue.qsize()) # 这里的值还是0 class MyServer(socketserver.BaseRequestHandler): def handle(self): print("conn is :", self.request) # conn print("addr is :", self.client_address) # addr a[self.client_address] = self.request print("a:",a) Control_system.socketQueue.put(a) # 这里的a是放进去的 if __name__ == '__main__': if not QApplication.instance(): app = QApplication(sys.argv) else: app = QApplication.instance() w = Control_system() w.show() sys.exit(app.exec()) ```

MySQL 8.0.19安装教程(windows 64位)

话不多说直接开干 目录 1-先去官网下载点击的MySQL的下载​ 2-配置初始化的my.ini文件的文件 3-初始化MySQL 4-安装MySQL服务 + 启动MySQL 服务 5-连接MySQL + 修改密码 先去官网下载点击的MySQL的下载 下载完成后解压 解压完是这个样子 配置初始化的my.ini文件的文件 ...

Python+OpenCV计算机视觉

Python+OpenCV计算机视觉系统全面的介绍。

Vue.js 2.0之全家桶系列视频课程

基于新的Vue.js 2.3版本, 目前新全的Vue.js教学视频,让你少走弯路,直达技术前沿! 1. 包含Vue.js全家桶(vue.js、vue-router、axios、vuex、vue-cli、webpack、ElementUI等) 2. 采用笔记+代码案例的形式讲解,通俗易懂

navicat(内含激活码)

navicat支持mysql的可视化操作,内涵激活码,不用再忍受弹框的痛苦。

HTML期末大作业

这是我自己做的HTML期末大作业,花了很多时间,稍加修改就可以作为自己的作业了,而且也可以作为学习参考

150讲轻松搞定Python网络爬虫

【为什么学爬虫?】 &nbsp; &nbsp; &nbsp; &nbsp;1、爬虫入手容易,但是深入较难,如何写出高效率的爬虫,如何写出灵活性高可扩展的爬虫都是一项技术活。另外在爬虫过程中,经常容易遇到被反爬虫,比如字体反爬、IP识别、验证码等,如何层层攻克难点拿到想要的数据,这门课程,你都能学到! &nbsp; &nbsp; &nbsp; &nbsp;2、如果是作为一个其他行业的开发者,比如app开发,web开发,学习爬虫能让你加强对技术的认知,能够开发出更加安全的软件和网站 【课程设计】 一个完整的爬虫程序,无论大小,总体来说可以分成三个步骤,分别是: 网络请求:模拟浏览器的行为从网上抓取数据。 数据解析:将请求下来的数据进行过滤,提取我们想要的数据。 数据存储:将提取到的数据存储到硬盘或者内存中。比如用mysql数据库或者redis等。 那么本课程也是按照这几个步骤循序渐进的进行讲解,带领学生完整的掌握每个步骤的技术。另外,因为爬虫的多样性,在爬取的过程中可能会发生被反爬、效率低下等。因此我们又增加了两个章节用来提高爬虫程序的灵活性,分别是: 爬虫进阶:包括IP代理,多线程爬虫,图形验证码识别、JS加密解密、动态网页爬虫、字体反爬识别等。 Scrapy和分布式爬虫:Scrapy框架、Scrapy-redis组件、分布式爬虫等。 通过爬虫进阶的知识点我们能应付大量的反爬网站,而Scrapy框架作为一个专业的爬虫框架,使用他可以快速提高我们编写爬虫程序的效率和速度。另外如果一台机器不能满足你的需求,我们可以用分布式爬虫让多台机器帮助你快速爬取数据。 &nbsp; 从基础爬虫到商业化应用爬虫,本套课程满足您的所有需求! 【课程服务】 专属付费社群+每周三讨论会+1v1答疑

三个项目玩转深度学习(附1G源码)

从事大数据与人工智能开发与实践约十年,钱老师亲自见证了大数据行业的发展与人工智能的从冷到热。事实证明,计算机技术的发展,算力突破,海量数据,机器人技术等,开启了第四次工业革命的序章。深度学习图像分类一直是人工智能的经典任务,是智慧零售、安防、无人驾驶等机器视觉应用领域的核心技术之一,掌握图像分类技术是机器视觉学习的重中之重。针对现有线上学习的特点与实际需求,我们开发了人工智能案例实战系列课程。打造:以项目案例实践为驱动的课程学习方式,覆盖了智能零售,智慧交通等常见领域,通过基础学习、项目案例实践、社群答疑,三维立体的方式,打造最好的学习效果。

基于STM32的电子时钟设计

时钟功能 还有闹钟功能,温湿度功能,整点报时功能 你值得拥有

学生成绩管理系统(PHP + MYSQL)

做的是数据库课程设计,使用的php + MySQL,本来是黄金搭配也就没啥说的,推荐使用wamp服务器,里面有详细的使用说明,带有界面的啊!呵呵 不行的话,可以给我留言!

面试了一个 31 岁程序员,让我有所触动,30岁以上的程序员该何去何从?

最近面试了一个31岁8年经验的程序猿,让我有点感慨,大龄程序猿该何去何从。

程序员的兼职技能课

获取讲师答疑方式: 在付费视频第一节(触摸命令_ALL)片头有二维码及加群流程介绍 限时福利 原价99元,今日仅需39元!购课添加小助手(微信号:itxy41)按提示还可领取价值800元的编程大礼包! 讲师介绍: 苏奕嘉&nbsp;前阿里UC项目工程师 脚本开发平台官方认证满级(六级)开发者。 我将如何教会你通过【定制脚本】赚到你人生的第一桶金? 零基础程序定制脚本开发课程,是完全针对零脚本开发经验的小白而设计,课程内容共分为3大阶段: ①前期将带你掌握Q开发语言和界面交互开发能力; ②中期通过实战来制作有具体需求的定制脚本; ③后期将解锁脚本的更高阶玩法,打通任督二脉; ④应用定制脚本合法赚取额外收入的完整经验分享,带你通过程序定制脚本开发这项副业,赚取到你的第一桶金!

实用主义学Python(小白也容易上手的Python实用案例)

原价169,限时立减100元! 系统掌握Python核心语法16点,轻松应对工作中80%以上的Python使用场景! 69元=72讲+源码+社群答疑+讲师社群分享会&nbsp; 【哪些人适合学习这门课程?】 1)大学生,平时只学习了Python理论,并未接触Python实战问题; 2)对Python实用技能掌握薄弱的人,自动化、爬虫、数据分析能让你快速提高工作效率; 3)想学习新技术,如:人工智能、机器学习、深度学习等,这门课程是你的必修课程; 4)想修炼更好的编程内功,优秀的工程师肯定不能只会一门语言,Python语言功能强大、使用高效、简单易学。 【超实用技能】 从零开始 自动生成工作周报 职场升级 豆瓣电影数据爬取 实用案例 奥运冠军数据分析 自动化办公:通过Python自动化分析Excel数据并自动操作Word文档,最终获得一份基于Excel表格的数据分析报告。 豆瓣电影爬虫:通过Python自动爬取豆瓣电影信息并将电影图片保存到本地。 奥运会数据分析实战 简介:通过Python分析120年间奥运会的数据,从不同角度入手分析,从而得出一些有趣的结论。 【超人气老师】 二两 中国人工智能协会高级会员 生成对抗神经网络研究者 《深入浅出生成对抗网络:原理剖析与TensorFlow实现》一书作者 阿里云大学云学院导师 前大型游戏公司后端工程师 【超丰富实用案例】 0)图片背景去除案例 1)自动生成工作周报案例 2)豆瓣电影数据爬取案例 3)奥运会数据分析案例 4)自动处理邮件案例 5)github信息爬取/更新提醒案例 6)B站百大UP信息爬取与分析案例 7)构建自己的论文网站案例

Java8零基础入门视频教程

这门课程基于主流的java8平台,由浅入深的详细讲解了java SE的开发技术,可以使java方向的入门学员,快速扎实的掌握java开发技术!

Python数据挖掘简易入门

&nbsp; &nbsp; &nbsp; &nbsp; 本课程为Python数据挖掘方向的入门课程,课程主要以真实数据为基础,详细介绍数据挖掘入门的流程和使用Python实现pandas与numpy在数据挖掘方向的运用,并深入学习如何运用scikit-learn调用常用的数据挖掘算法解决数据挖掘问题,为进一步深入学习数据挖掘打下扎实的基础。

零基础学C#编程—C#从小白到大咖

本课程从初学者角度出发,提供了C#从入门到成为程序开发高手所需要掌握的各方面知识和技术。 【课程特点】 1 由浅入深,编排合理; 2 视频讲解,精彩详尽; 3 丰富实例,轻松易学; 4 每章总结配有难点解析文档。 15大章节,228课时,1756分钟与你一同进步!

MySQL数据库面试题(2020最新版)

文章目录数据库基础知识为什么要使用数据库什么是SQL?什么是MySQL?数据库三大范式是什么mysql有关权限的表都有哪几个MySQL的binlog有有几种录入格式?分别有什么区别?数据类型mysql有哪些数据类型引擎MySQL存储引擎MyISAM与InnoDB区别MyISAM索引与InnoDB索引的区别?InnoDB引擎的4大特性存储引擎选择索引什么是索引?索引有哪些优缺点?索引使用场景(重点)...

多功能数字钟.zip

利用数字电子计数知识设计并制作的数字电子钟(含multisim仿真),该数字钟具有显示星期、24小时制时间、闹铃、整点报时、时间校准功能

极简JAVA学习营第四期(报名以后加助教微信:eduxy-1)

想学好JAVA必须要报两万的培训班吗? Java大神勿入 如果你: 零基础想学JAVA却不知道从何入手 看了一堆书和视频却还是连JAVA的环境都搭建不起来 囊中羞涩面对两万起的JAVA培训班不忍直视 在职没有每天大块的时间专门学习JAVA 那么恭喜你找到组织了,在这里有: 1. 一群志同道合立志学好JAVA的同学一起学习讨论JAVA 2. 灵活机动的学习时间完成特定学习任务+每日编程实战练习 3. 热心助人的助教和讲师及时帮你解决问题,不按时完成作业小心助教老师的家访哦 上一张图看看前辈的感悟: &nbsp; &nbsp; 大家一定迫不及待想知道什么是极简JAVA学习营了吧,下面就来给大家说道说道: 什么是极简JAVA学习营? 1. 针对Java小白或者初级Java学习者; 2. 利用9天时间,每天1个小时时间; 3.通过 每日作业 / 组队PK / 助教答疑 / 实战编程 / 项目答辩 / 社群讨论 / 趣味知识抢答等方式让学员爱上学习编程 , 最终实现能独立开发一个基于控制台的‘库存管理系统’ 的学习模式 极简JAVA学习营是怎么学习的? &nbsp; 如何报名? 只要购买了极简JAVA一:JAVA入门就算报名成功! &nbsp;本期为第四期极简JAVA学习营,我们来看看往期学员的学习状态: 作业看这里~ &nbsp; 助教的作业报告是不是很专业 不交作业打屁屁 助教答疑是不是很用心 &nbsp; 有奖抢答大家玩的很嗨啊 &nbsp; &nbsp; 项目答辩终于开始啦 &nbsp; 优秀者的获奖感言 &nbsp; 这是答辩项目的效果 &nbsp; &nbsp; 这么细致的服务,这么好的氛围,这样的学习效果,需要多少钱呢? 不要1999,不要199,不要99,只要9.9 是的你没听错,只要9.9以上所有就都属于你了 如果你: 1、&nbsp;想学JAVA没有基础 2、&nbsp;想学JAVA没有整块的时间 3、&nbsp;想学JAVA没有足够的预算 还等什么?赶紧报名吧,抓紧抢位,本期只招300人,错过只有等时间待定的下一期了 &nbsp; 报名请加小助手微信:eduxy-1 &nbsp; &nbsp;

Python可以这样学(第一季:Python内功修炼)

董付国系列教材《Python程序设计基础》、《Python程序设计(第2版)》、《Python可以这样学》配套视频,讲解Python 3.5.x和3.6.x语法、内置对象用法、选择与循环以及函数设计与使用、lambda表达式用法、字符串与正则表达式应用、面向对象编程、文本文件与二进制文件操作、目录操作与系统运维、异常处理结构。

Java基础知识面试题(2020最新版)

文章目录Java概述何为编程什么是Javajdk1.5之后的三大版本JVM、JRE和JDK的关系什么是跨平台性?原理是什么Java语言有哪些特点什么是字节码?采用字节码的最大好处是什么什么是Java程序的主类?应用程序和小程序的主类有何不同?Java应用程序与小程序之间有那些差别?Java和C++的区别Oracle JDK 和 OpenJDK 的对比基础语法数据类型Java有哪些数据类型switc...

机器学习实战系列套餐(必备基础+经典算法+案例实战)

机器学习实战系列套餐以实战为出发点,帮助同学们快速掌握机器学习领域必备经典算法原理并结合Python工具包进行实战应用。建议学习顺序:1.Python必备工具包:掌握实战工具 2.机器学习算法与实战应用:数学原理与应用方法都是必备技能 3.数据挖掘实战:通过真实数据集进行项目实战。按照下列课程顺序学习即可! 课程风格通俗易懂,用最接地气的方式带领大家轻松进军机器学习!提供所有课程代码,PPT与实战数据,有任何问题欢迎随时与我讨论。

Java面试题大全(2020版)

发现网上很多Java面试题都没有答案,所以花了很长时间搜集整理出来了这套Java面试题大全,希望对大家有帮助哈~ 本套Java面试题大全,全的不能再全,哈哈~ 一、Java 基础 1. JDK 和 JRE 有什么区别? JDK:Java Development Kit 的简称,java 开发工具包,提供了 java 的开发环境和运行环境。 JRE:Java Runtime Environ...

程序员垃圾简历长什么样?

已经连续五年参加大厂校招、社招的技术面试工作,简历看的不下于万份 这篇文章会用实例告诉你,什么是差的程序员简历! 疫情快要结束了,各个公司也都开始春招了,作为即将红遍大江南北的新晋UP主,那当然要为小伙伴们做点事(手动狗头)。 就在公众号里公开征简历,义务帮大家看,并一一点评。《启舰:春招在即,义务帮大家看看简历吧》 一石激起千层浪,三天收到两百多封简历。 花光了两个星期的所有空闲时...

深度学习原理+项目实战+算法详解+主流框架(套餐)

深度学习系列课程从深度学习基础知识点开始讲解一步步进入神经网络的世界再到卷积和递归神经网络,详解各大经典网络架构。实战部分选择当下最火爆深度学习框架PyTorch与Tensorflow/Keras,全程实战演示框架核心使用与建模方法。项目实战部分选择计算机视觉与自然语言处理领域经典项目,从零开始详解算法原理,debug模式逐行代码解读。适合准备就业和转行的同学们加入学习! 建议按照下列课程顺序来进行学习 (1)掌握深度学习必备经典网络架构 (2)深度框架实战方法 (3)计算机视觉与自然语言处理项目实战。(按照课程排列顺序即可)

HoloLens2开发入门教程

本课程为HoloLens2开发入门教程,讲解部署开发环境,安装VS2019,Unity版本,Windows SDK,创建Unity项目,讲解如何使用MRTK,编辑器模拟手势交互,打包VS工程并编译部署应用到HoloLens上等。

几率大的Redis面试题(含答案)

本文的面试题如下: Redis 持久化机制 缓存雪崩、缓存穿透、缓存预热、缓存更新、缓存降级等问题 热点数据和冷数据是什么 Memcache与Redis的区别都有哪些? 单线程的redis为什么这么快 redis的数据类型,以及每种数据类型的使用场景,Redis 内部结构 redis的过期策略以及内存淘汰机制【~】 Redis 为什么是单线程的,优点 如何解决redis的并发竞争key问题 Red...

MFC一站式终极全套课程包

该套餐共包含从C小白到C++到MFC的全部课程,整套学下来绝对成为一名C++大牛!!!

【数据结构与算法综合实验】欢乐连连看(C++ & MFC)案例

这是武汉理工大学计算机学院数据结构与算法综合实验课程的第三次项目:欢乐连连看(C++ & MFC)迭代开发代码。运行环境:VS2017。已经实现功能:开始游戏、消子、判断胜负、提示、重排、计时、帮助。

YOLOv3目标检测实战:训练自己的数据集

YOLOv3是一种基于深度学习的端到端实时目标检测方法,以速度快见长。本课程将手把手地教大家使用labelImg标注和使用YOLOv3训练自己的数据集。课程分为三个小项目:足球目标检测(单目标检测)、梅西目标检测(单目标检测)、足球和梅西同时目标检测(两目标检测)。 本课程的YOLOv3使用Darknet,在Ubuntu系统上做项目演示。包括:安装Darknet、给自己的数据集打标签、整理自己的数据集、修改配置文件、训练自己的数据集、测试训练出的网络模型、性能统计(mAP计算和画出PR曲线)和先验框聚类。 Darknet是使用C语言实现的轻型开源深度学习框架,依赖少,可移植性好,值得深入探究。 除本课程《YOLOv3目标检测实战:训练自己的数据集》外,本人推出了有关YOLOv3目标检测的系列课程,请持续关注该系列的其它课程视频,包括: 《YOLOv3目标检测实战:交通标志识别》 《YOLOv3目标检测:原理与源码解析》 《YOLOv3目标检测:网络模型改进方法》 敬请关注并选择学习!

u-boot-2015.07.tar.bz2

uboot-2015-07最新代码,喜欢的朋友请拿去

相关热词 c# 解析cad c#数字格式化万 c#int转byte c#格式化日期 c# wpf 表格 c# 实现ad域验证登录 c#心跳包机制 c#使用fmod.dll c#dll vb 调用 c# outlook
立即提问
相关内容推荐