{"id":3384,"date":"2018-05-03T11:41:51","date_gmt":"2018-05-03T09:41:51","guid":{"rendered":"https:\/\/vasil.ludost.net\/blog\/?p=3384"},"modified":"2018-05-03T11:45:33","modified_gmt":"2018-05-03T09:45:33","slug":"2018-05-03-python-multiprocessing-thread-%d0%be%d0%b2%d0%b5-%d0%b8-%d0%b7%d0%b0%d0%b1%d0%b8%d0%b2%d0%b0%d0%bd%d0%b8%d1%8f","status":"publish","type":"post","link":"https:\/\/vasil.ludost.net\/blog\/?p=3384","title":{"rendered":"2018-05-03 python, multiprocessing, thread-\u043e\u0432\u0435 \u0438 \u0437\u0430\u0431\u0438\u0432\u0430\u043d\u0438\u044f"},"content":{"rendered":"<p>\u0412\u0441\u0435\u043a\u0438 \u0434\u0435\u043d \u0441\u0435 \u0443\u0431\u0435\u0436\u0434\u0430\u0432\u0430\u043c, \u0447\u0435 \u043d\u0438\u0449\u043e \u043d\u0435 \u0440\u0430\u0431\u043e\u0442\u0438.<\/p>\n<p>\u041e\u0442\u043a\u0440\u0438\u0445 \u0437\u0430\u0431\u0430\u0432\u0435\u043d \u043f\u0440\u043e\u0431\u043b\u0435\u043c \u0441 python \u0438 multiprocessing, \u043a\u043e\u0439\u0442\u043e \u0432 \u043c\u043e\u043c\u0435\u043d\u0442\u0430 \u043e\u0449\u0435 \u043d\u0435 \u043c\u043e\u0433\u0430 \u0434\u0430 \u0440\u0435\u0448\u0430 \u0447\u0438\u0439 \u043f\u0440\u043e\u0431\u043b\u0435\u043c \u0435 (\u0432 \u043a\u0440\u0430\u0439\u043d\u0430 \u0441\u043c\u0435\u0442\u043a\u0430 \u0449\u0435 \u0441\u0435 \u043e\u043a\u0430\u0436\u0435 \u043c\u043e\u0439). \u041e\u0442\u043d\u0435 \u043c\u0438 \u043f\u0440\u0438\u043b\u0438\u0447\u043d\u043e \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0432\u0440\u0435\u043c\u0435 \u0434\u0430 \u0433\u043e \u0445\u0432\u0430\u043d\u0430 \u0438 \u0441\u0438 \u0441\u0442\u0440\u0443\u0432\u0430 \u0434\u0430 \u0433\u043e \u0440\u0430\u0437\u043a\u0430\u0436\u0430.<\/p>\n<p>\u041c\u0430\u043b\u043a\u043e \u043f\u0440\u0435\u0434\u0438\u0441\u0442\u043e\u0440\u0438\u044f: \u043f\u043e\u043b\u0437\u0432\u0430\u043c\u0435 influxdb, \u0432 \u043a\u043e\u0435\u0442\u043e \u0442\u044a\u043f\u0447\u0435\u043c \u0431\u0430\u044f \u0441\u0435\u043a\u0443\u043d\u0434\u043d\u0438 \u0434\u0430\u043d\u043d\u0438, \u043a\u043e\u0438\u0442\u043e \u043f\u043e\u0441\u043b\u0435 \u043f\u0440\u0435\u0434\u044a\u0432\u043a\u0432\u0430\u043c\u0435 \u0434\u043e \u043c\u0438\u043d\u0443\u0442\u043d\u0438. InfluxDB \u0438\u043c\u0430 continuous queries, \u043a\u043e\u0438\u0442\u043e \u0432\u044a\u0440\u0448\u0430\u0442 \u0442\u0430\u0437\u0438 \u0440\u0430\u0431\u043e\u0442\u0430 &#8211; \u043d\u0430 \u043d\u044f\u043a\u0430\u043a\u044a\u0432 \u0438\u043d\u0442\u0435\u0440\u0432\u0430\u043b \u043e\u0442 \u0432\u0440\u0435\u043c\u0435 \u0445\u0432\u0430\u0449\u0430\u0442 \u043d\u043e\u0432\u0438\u0442\u0435 \u0434\u0430\u043d\u043d\u0438 \u0438 \u0433\u0438 \u0441\u0433\u044a\u0432\u0430\u0442. \u0422\u0435\u0437\u0438 \u0437\u0430\u044f\u0432\u043a\u0438 \u0438\u043c\u0430\u0445\u0430 \u043d\u044f\u043a\u043e\u043b\u043a\u043e \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430:<br \/>\n&#8211; \u043d\u0435 \u0441\u0435 \u043e\u043f\u0440\u0430\u0432\u044f\u0442 \u0441 \u043f\u043e\u043f\u044a\u043b\u0432\u0430\u043d\u0435 \u043d\u0430 \u0441\u0442\u0430\u0440\u0438 \u0434\u0430\u043d\u043d\u0438;<br \/>\n&#8211; \u0438\u0437\u043f\u044a\u043b\u043d\u044f\u0432\u0430\u0442 \u0441\u0435 \u0440\u044f\u0434\u043a\u043e \u0438 \u043c\u0438\u043d\u0443\u0442\u043d\u0438\u0442\u0435 \u0434\u0430\u043d\u043d\u0438 \u0438\u0437\u043e\u0441\u0442\u0430\u0432\u0430\u0442;<br \/>\n&#8211; \u0438\u0437\u043f\u044a\u043b\u043d\u044f\u0432\u0430\u0442 \u0441\u0435 \u0432 \u043e\u0431\u0449\u0438 \u043b\u0438\u043d\u0438\u0438 \u0432 \u0435\u0434\u0438\u043d thread, \u043a\u043e\u0435\u0442\u043e \u043a\u0430\u0440\u0430 \u043c\u0438\u043d\u0443\u0442\u043d\u0438\u0442\u0435 \u0434\u0430\u043d\u043d\u0438 \u0434\u0430 \u0438\u0437\u043e\u0441\u0442\u0430\u0432\u0430\u0442 \u043e\u0449\u0435 \u043f\u043e\u0432\u0435\u0447\u0435 (\u0432 \u043d\u0430\u0448\u0438\u044f \u0441\u043b\u0443\u0447\u0430\u0439 \u043f\u0440\u0435\u0434\u0438 \u0434\u0430 \u0433\u0438 \u0441\u043c\u0435\u043d\u0438\u043c \u0441 \u043e\u043a\u043e\u043b\u043e 12 \u0447\u0430\u0441\u0430).<\/p>\n<p>\u0425\u0432\u0430\u043d\u0430\u0445\u0430 \u043c\u0435 \u0434\u044f\u0432\u043e\u043b\u0438\u0442\u0435 \u0438 \u0441\u0438 \u043d\u0430\u043f\u0438\u0441\u0430\u0445 \u043f\u0440\u043e\u0441\u0442\u043e \u0434\u0435\u043c\u043e\u043d\u0447\u0435 \u043d\u0430 python, \u043a\u043e\u0435\u0442\u043e \u0434\u0430 \u0441\u044a\u0431\u0438\u0440\u0430 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u0437\u0430 \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u0438\u0442\u0435 \u0431\u0430\u0437\u0438 \u043a\u0430\u043a\u0432\u0438 \u0434\u0430\u043d\u043d\u0438 \u043c\u043e\u0433\u0430\u0442 \u0434\u0430 \u0441\u0435 \u0441\u0433\u044a\u043d\u0430\u0442, \u0438 \u043f\u0430\u0440\u0430\u043b\u0435\u043b\u043d\u043e \u0434\u0430 \u043f\u043e\u043f\u044a\u043b\u0432\u0430 \u0434\u0430\u043d\u043d\u0438\u0442\u0435. \u0420\u0430\u0431\u043e\u0442\u0438 \u0432 \u043e\u0431\u0449\u0438 \u043b\u0438\u043d\u0438\u0438 \u043f\u043e \u0441\u043b\u0435\u0434\u043d\u0438\u044f \u043d\u0430\u0447\u0438\u043d:<br \/>\n&#8211; \u0432\u0437\u0438\u043c\u0430 \u0441\u043f\u0438\u0441\u044a\u043a \u0441 \u0431\u0430\u0437\u0438\u0442\u0435 \u0434\u0430\u043d\u043d\u0438<br \/>\n&#8211; \u043f\u0443\u0441\u043a\u0430 \u043f\u0440\u0435\u0437 multiprocessing-\u0430 \u0434\u0430 \u0441\u0435 \u0441\u044a\u0431\u0435\u0440\u0435 \u0437\u0430 \u0432\u0441\u044f\u043a\u0430 \u0431\u0430\u0437\u0430 \u043a\u0430\u043a\u0432\u0438 \u0437\u0430\u044f\u0432\u043a\u0438 \u0442\u0440\u044f\u0431\u0432\u0430 \u0434\u0430 \u0441\u0435 \u043f\u0443\u0441\u043d\u0430\u0442, \u043d\u0430 \u0431\u0430\u0437\u0430 \u043d\u0430 \u043a\u0430\u043a\u0432\u0438 measurement-\u0438 \u0438\u043c\u0430 \u0438 \u0434\u043e\u043a\u043e\u0433\u0430 \u0441\u0430 \u043c\u0438\u043d\u0443\u0442\u043d\u0438\u0442\u0435 \u0438 \u0441\u0435\u043a\u0443\u043d\u0434\u043d\u0438\u0442\u0435 \u0434\u0430\u043d\u043d\u0438 \u0432 \u0442\u044f\u0445;<br \/>\n&#8211; \u043f\u0443\u0441\u043a\u0430 \u043f\u0440\u0435\u0437 multiprocessing-\u0430 \u0441\u044a\u0431\u0440\u0430\u043d\u0438\u0442\u0435 \u043e\u0442 \u043f\u0440\u0435\u0434\u043d\u0438\u044f pass \u0437\u0430\u044f\u0432\u043a\u0438<br \/>\n&#8211; \u0438 \u0442\u0430\u043a\u0430 \u0434\u043e \u043a\u0440\u0430\u044f \u043d\u0430 \u0441\u0432\u0435\u0442\u0430 (\u0438\u043b\u0438 \u0434\u043e\u043a\u0430\u0442\u043e \u0437\u0430\u0432\u0438\u0441\u043d\u0435). <\/p>\n<p>\u0421\u043b\u0435\u0434 \u043a\u0430\u0442\u043e \u043d\u0430\u0432\u0430\u043a\u0441\u0430 \u0437\u0430 \u043d\u044f\u043a\u043e\u043b\u043a\u043e \u0447\u0430\u0441\u0430, \u0443\u0441\u043f\u044f\u0432\u0430\u0448\u0435 \u0434\u0430 \u0434\u044a\u0440\u0436\u0438 \u043c\u0438\u043d\u0443\u0442\u043d\u0438\u0442\u0435 \u0434\u0430\u043d\u043d\u0438 \u0432 \u0440\u0430\u043c\u043a\u0438\u0442\u0435 \u043d\u0430 \u043d\u044f\u043a\u043e\u043b\u043a\u043e \u043c\u0438\u043d\u0443\u0442\u0438 \u043e\u0442 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0442\u0435 \u0441\u0435\u043a\u0443\u043d\u0434\u043d\u0438 \u0434\u0430\u043d\u043d\u0438, \u043a\u043e\u0435\u0442\u043e \u0441\u0438 \u0431\u0435\u0448\u0435 \u0441\u0435\u0440\u0438\u043e\u0437\u043d\u043e \u043f\u043e\u0434\u043e\u0431\u0440\u0435\u043d\u0438\u0435 \u043d\u0430 \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u044f\u0442\u0430. \u0415\u0434\u0438\u043d\u0441\u0442\u0432\u0435\u043d\u0438\u044f\u0442 \u043f\u0440\u043e\u0431\u043b\u0435\u043c \u0431\u0435\u0448\u0435, \u0447\u0435 \u043e\u0442 \u0432\u0440\u0435\u043c\u0435 \u043d\u0430 \u0432\u0440\u0435\u043c\u0435 \u0441\u043f\u0438\u0440\u0430\u0448\u0435 \u0434\u0430 process-\u0432\u0430 \u0438 \u0443\u0432\u0438\u0441\u0432\u0430\u0448\u0435.<\/p>\n<p>\u0414\u043d\u0435\u0441 \u043d\u0430\u043c\u0435\u0440\u0438\u0445 \u0432\u0440\u0435\u043c\u0435 \u0434\u0430 \u0433\u043e \u043f\u0440\u0435\u0433\u043b\u0435\u0434\u0430\u043c \u0432\u043d\u0438\u043c\u0430\u0442\u0435\u043b\u043d\u043e \u043a\u0430\u043a\u0432\u043e \u043c\u0443 \u0441\u0435 \u0441\u043b\u0443\u0447\u0432\u0430. \u041f\u0440\u043e\u0446\u0435\u0441\u044a\u0442 \u0438\u0437\u0433\u043b\u0435\u0436\u0434\u0430 \u043a\u0430\u0442\u043e \u0435\u0434\u0438\u043d parent \u0438 5 fork()-\u043d\u0430\u0442\u0438 child-\u0430, \u043a\u0430\u0442\u043e:<br \/>\nParent-\u0430 \u0441\u043f\u0438 \u0432\u044a\u0432 futex 0x22555a0;<br \/>\nChild 18455 \u0432\u044a\u0432 futex 0x7fdbfa366000;<br \/>\nChild 18546 read<br \/>\nChild 18457 \u0432\u044a\u0432 futex 0x7fdbfa366000<br \/>\nChild 18461 \u0432\u044a\u0432 futex 0x7fdbfa366000<br \/>\nChild 18462 \u0432\u044a\u0432 futex 0x7fdbfa366000<br \/>\nChild 18465 \u0432\u044a\u0432 futex 0x7fdbf908c2c0<\/p>\n<p>\u0422\u043e\u0432\u0430 \u043d\u0435 \u0431\u0435\u0448\u0435 \u043e\u0441\u043e\u0431\u0435\u043d\u043e \u043f\u043e\u043b\u0435\u0437\u043d\u043e, \u0438 \u0441\u0435 \u043e\u043a\u0430\u0437\u0430, \u0447\u0435 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u0438\u044f python debugger (pdb) \u043d\u0435 \u043c\u043e\u0436\u0435 \u0434\u0430 \u0441\u0435 \u0437\u0430\u043a\u0430\u0447\u0430 \u0437\u0430 \u0441\u044a\u0449\u0435\u0441\u0442\u0432\u0443\u0432\u0430\u0449\u0438 \u043f\u0440\u043e\u0446\u0435\u0441\u0438, \u043d\u043e \u0437\u0430 \u0441\u043c\u0435\u0442\u043a\u0430 \u043d\u0430 \u0442\u043e\u0432\u0430 gdb \u0441 \u043f\u043e\u0434\u0445\u043e\u0434\u044f\u0449\u0438 debug \u0441\u0438\u043c\u0432\u043e\u043b\u0438 \u043c\u043e\u0436\u0435, \u0438 \u043c\u043e\u0436\u0435 \u0434\u0430 \u0434\u0430\u0432\u0430 \u0434\u043e\u0441\u0442\u0430 \u043f\u043e\u043b\u0435\u0437\u043d\u0430 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f. \u041f\u043e \u0442\u043e\u0437\u0438 \u043d\u0430\u0447\u0438\u043d \u043e\u0442\u043a\u0440\u0438\u0445, \u0447\u0435 parent-\u0430 \u0447\u0430\u043a\u0430 \u0435\u0434\u0438\u043d child \u0434\u0430 \u043f\u0440\u0438\u043a\u043b\u044e\u0447\u0438 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u0430 \u0441\u0438:<\/p>\n<p><code style=\"white-space:pre-wrap\"><br \/>\n#11 PyEval_EvalFrameEx (<br \/>\n    f=f@entry=Frame 0x235fb80, for file \/usr\/lib64\/python2.7\/multiprocessing\/pool.py, line 543, in wait (self=<mapresult (_value=[{u'results': [{u'series': [{u'values': [[u'1970-01-01T00:00:00Z', 222]], u'name': u'result', u'columns': [u'time', u'written']}], u'messages': [{u'text': u'deprecated use of \\'SELECT max(*) INTO \"DB1\".m1.disk FROM \"DB1\".s1.disk WHERE time >= 1525137960000000000 AND time < 1525138107000000000 GROUP BY time(1m), * fill(linear)\\' in a read only context, please use a POST request instead', u'level': u'warning'}], u'statement_id': 0}]}, None], _callback=None, _chunksize=1, _number_left=1, _ready=False, _success=True, _cond=<_Condition(_Verbose__verbose=False, _Condition__lock=<thread.lock at remote 0x21026d0>, acquire=<built -in method acquire of thread.lock object at remote 0x21026d0>, _Condition__waiters=[<thread .lock at remote 0x2102710>], release=<built -in method release of thread.lock object at remote 0x21026d0>) at remote 0x7fdbe0015310>, _job=45499, _cache={45499: < ...>}) a...(truncated), throwflag=throwflag@entry=0) at \/usr\/src\/debug\/Python-2.7.5\/Python\/ceval.c:3040<br \/>\n<\/built><\/thread><\/built><\/mapresult><\/code><\/p>\n<p>\u041a\u0430\u0442\u043e \u0432 pool.py \u043e\u043a\u043e\u043b\u043e \u0440\u0435\u0434 543 \u0438\u043c\u0430 \u0441\u043b\u0435\u0434\u043d\u043e\u0442\u043e:<\/p>\n<p><code style=\"white-space:pre-wrap\"><br \/>\nclass ApplyResult(object):<\/p>\n<p>...<\/p>\n<p>    def wait(self, timeout=None):<br \/>\n        self._cond.acquire()<br \/>\n        try:<br \/>\n            if not self._ready:<br \/>\n                self._cond.wait(timeout)<br \/>\n        finally:<br \/>\n            self._cond.release()<\/p>\n<p>\u041f\u044a\u0440\u0432\u043e\u043d\u0430\u0447\u0430\u043b\u043d\u043e \u0441\u0438 \u043c\u0438\u0441\u043b\u0435\u0445, \u0447\u0435 18546 \u043e\u0447\u0430\u043a\u0432\u0430 \u0434\u0430 \u043f\u0440\u043e\u0447\u0435\u0442\u0435 \u043d\u0435\u0449\u043e \u043e\u0442 \u0433\u0440\u0435\u0448\u043d\u043e\u0442\u043e \u043c\u044f\u0441\u0442\u043e, \u043d\u043e \u0438\u0437\u043b\u0435\u0437\u0435, \u0447\u0435 \u0442\u043e\u0432\u0430 \u0435 child-\u0430, \u043a\u043e\u0439\u0442\u043e \u0435 \u0441\u043f\u0435\u0447\u0435\u043b\u0438\u043b \u0441\u044a\u0441\u0442\u0435\u0437\u0430\u043d\u0438\u0435\u0442\u043e \u0437\u0430 \u0438\u0437\u043f\u044a\u043b\u043d\u044f\u0432\u0430\u043d\u0435 \u043d\u0430 \u0441\u043b\u0435\u0434\u0432\u0430\u0449\u0430\u0442\u0430 \u0437\u0430\u0434\u0430\u0447\u0430 \u0438 \u0447\u0430\u043a\u0430 \u0434\u0430 \u043c\u0443 \u044f \u0434\u0430\u0434\u0430\u0442 (\u043a\u043e\u0435\u0442\u043e \u0438\u0437\u0433\u043b\u0435\u0436\u0434\u0430 \u0441\u0435 \u0440\u0430\u0437\u0434\u0430\u0432\u0430 \u043f\u0440\u0435\u0437 futex 0x7fdbfa366000). \u0415\u0434\u0438\u043d \u043e\u0442 child-\u043e\u0432\u0435\u0442\u0435 \u043e\u0431\u0430\u0447\u0435 \u0447\u0430\u043a\u0430 \u0432 \u0434\u0440\u0443\u0433 lock:<\/p>\n<p><\/code><code style=\"white-space:pre-wrap\"><br \/>\n(gdb) bt<br \/>\n#0  __lll_lock_wait () at ..\/nptl\/sysdeps\/unix\/sysv\/linux\/x86_64\/lowlevellock.S:135<br \/>\n#1  0x00007fdbf9b68dcb in _L_lock_812 () from \/lib64\/libpthread.so.0<br \/>\n#2  0x00007fdbf9b68c98 in __GI___pthread_mutex_lock (mutex=mutex@entry=0x7fdbf908c2c0 <lock>) at ..\/nptl\/pthread_mutex_lock.c:79<br \/>\n#3  0x00007fdbf8e846ea in _nss_files_gethostbyname4_r (name=name@entry=0x233fa44 \"localhost\", pat=pat@entry=0x7fdbecfcb8e0, buffer=buffer@entry=0x7fdbecfcb340 \"hZ \\372\\333\\177\",<br \/>\n    buflen=buflen@entry=1064, errnop=errnop@entry=0x7fdbecfcb8b0, herrnop=herrnop@entry=0x7fdbecfcb910, ttlp=ttlp@entry=0x0) at nss_files\/files-hosts.c:381<br \/>\n#4  0x00007fdbf9170ed8 in gaih_inet (name=<optimized out>, name@entry=0x233fa44 \"localhost\", service=<\/optimized><optimized out>, req=req@entry=0x7fdbecfcbb90, pai=pai@entry=0x7fdbecfcb9f0,<br \/>\n    naddrs=naddrs@entry=0x7fdbecfcb9e0) at ..\/sysdeps\/posix\/getaddrinfo.c:877<br \/>\n#5  0x00007fdbf91745cd in __GI_getaddrinfo (name=name@entry=0x233fa44 \"localhost\", service=service@entry=0x7fdbecfcbbc0 \"8086\", hints=hints@entry=0x7fdbecfcbb90, pai=pai@entry=0x7fdbecfcbb78)<br \/>\n    at ..\/sysdeps\/posix\/getaddrinfo.c:2431<br \/>\n#6  0x00007fdbeed8760d in socket_getaddrinfo (self=<\/optimized><optimized out>, args=<\/optimized><optimized out>) at \/usr\/src\/debug\/Python-2.7.5\/Modules\/socketmodule.c:4193<br \/>\n#7  0x00007fdbf9e5fbb0 in call_function (oparg=<\/optimized><optimized out>, pp_stack=0x7fdbecfcbd10) at \/usr\/src\/debug\/Python-2.7.5\/Python\/ceval.c:4408<br \/>\n#8  PyEval_EvalFrameEx (<br \/>\n    f=f@entry=Frame 0x7fdbe8013350, for file \/usr\/lib\/python2.7\/site-packages\/urllib3\/util\/connection.py, line 64, in create_connection (address=('localhost', 8086), timeout=3000, source_address=None, socket_options=[(6, 1, 1)], host='localhost', port=8086, err=None), throwflag=throwflag@entry=0) at \/usr\/src\/debug\/Python-2.7.5\/Python\/ceval.c:3040<\/p>\n<p>(gdb) frame 3<br \/>\n#3  0x00007fdbf8e846ea in _nss_files_gethostbyname4_r (name=name@entry=0x233fa44 \"localhost\", pat=pat@entry=0x7fdbecfcb8e0, buffer=buffer@entry=0x7fdbecfcb340 \"hZ \\372\\333\\177\",<br \/>\n    buflen=buflen@entry=1064, errnop=errnop@entry=0x7fdbecfcb8b0, herrnop=herrnop@entry=0x7fdbecfcb910, ttlp=ttlp@entry=0x0) at nss_files\/files-hosts.c:381<br \/>\n381\t  __libc_lock_lock (lock);<br \/>\n(gdb) list<br \/>\n376\tenum nss_status<br \/>\n377\t_nss_files_gethostbyname4_r (const char *name, struct gaih_addrtuple **pat,<br \/>\n378\t\t\t\t     char *buffer, size_t buflen, int *errnop,<br \/>\n379\t\t\t\t     int *herrnop, int32_t *ttlp)<br \/>\n380\t{<br \/>\n381\t  __libc_lock_lock (lock);<br \/>\n382<br \/>\n383\t  \/* Reset file pointer to beginning or open file.  *\/<br \/>\n384\t  enum nss_status status = internal_setent (keep_stream);<br \/>\n385<br \/>\n<\/optimized><\/lock><\/code><\/p>\n<p>\u0418\u043b\u0438 \u0432 \u043f\u0440\u0435\u0432\u043e\u0434 &#8211; \u043e\u043f\u0438\u0442\u0432\u0430\u043c\u0435 \u0441\u0435 \u0434\u0430 \u0432\u0437\u0435\u043c\u0435\u043c \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u0438\u044f lock, \u043a\u043e\u0439\u0442\u043e libc-\u0442\u043e \u0438\u0437\u043f\u043e\u043b\u0437\u0432\u0430 \u0437\u0430 \u0434\u0430 \u0441\u0438 \u043f\u0430\u0437\u0438 reentrant \u0444\u0443\u043d\u043a\u0446\u0438\u0438\u0442\u0435, \u0438 \u043d\u044f\u043a\u043e\u0439 \u0433\u043e \u0434\u044a\u0440\u0436\u0438. \u041a\u043e\u0439 \u043b\u0438?<\/p>\n<p><code style=\"white-space:pre-wrap\"><br \/>\n(gdb) p lock<br \/>\n$3 = {__data = {__lock = 2, __count = 0, __owner = 16609, __nusers = 1, __kind = 0, __spins = 0, __elision = 0, __list = {__prev = 0x0, __next = 0x0}},<br \/>\n  __size = \"\\002\\000\\000\\000\\000\\000\\000\\000\\341@\\000\\000\\001\", '\\000' <repeats 26 times>, __align = 2}<br \/>\n(gdb) p &lock<br \/>\n$4 = (__libc_lock_t *) 0x7fdbf908c2c0 <lock><br \/>\n<\/lock><\/repeats><\/code><\/p>\n<p>\u0422\u0443\u043a \u0441\u0435 \u0432\u0438\u0436\u0434\u0430 \u043a\u0430\u043a owner-\u0430 \u043d\u0430 lock-\u0430 \u0432\u0441\u044a\u0449\u043d\u043e\u0441\u0442 \u0435 parent-\u0430. \u0422\u043e\u0439 \u043e\u0431\u0430\u0447\u0435 \u043d\u0435 \u0441\u043c\u044f\u0442\u0430, \u0447\u0435 \u0433\u043e \u0434\u044a\u0440\u0436\u0438:<\/p>\n<p><code style=\"white-space:pre-wrap\"><br \/>\n(gdb) p lock<br \/>\n$2 = 0<br \/>\n(gdb) p &lock<br \/>\n$3 = (__libc_lock_t *) 0x7fdbf9450df0 <lock><br \/>\n(gdb) x\/20x 0x7fdbf9450df0<br \/>\n0x7fdbf9450df0 <\/lock><lock>:\t0x00000000\t0x00000000\t0x00000000\t0x00000000<br \/>\n0x7fdbf9450e00 <__abort_msg>:\t0x00000000\t0x00000000\t0x00000000\t0x00000000<br \/>\n0x7fdbf9450e10 <lock>:\t0x00000000\t0x00000000\t0x00000000\t0x00000000<br \/>\n0x7fdbf9450e20 <stage>:\t0x00000000\t0x00000000\t0x00000000\t0x00000000<br \/>\n0x7fdbf9450e30 <phys_pages .8060>:\t0x001762c9\t0x00000000\t0x00000000\t0x00000000\n<\/phys_pages><\/stage><\/lock><\/__abort_msg><\/lock><\/code><\/p>\n<p>&#8230; \u043a\u043e\u0435\u0442\u043e \u0435 \u0438 \u0441\u044a\u0432\u0441\u0435\u043c \u043e\u0447\u0430\u043a\u0432\u0430\u043d\u043e, \u043f\u0440\u0438 \u0443\u0441\u043b\u043e\u0432\u0438\u0435, \u0447\u0435 \u0441\u0430 \u0434\u0432\u0430 \u043f\u0440\u043e\u0446\u0435\u0441\u0430 \u0438 \u0442\u0430\u044f \u043f\u0430\u043c\u0435\u0442 \u043d\u0435 \u0435 \u043e\u0431\u0449\u0430.<\/p>\n<p>\u0422\u0430, \u044f\u0432\u043d\u043e \u0442\u043e\u0432\u0430, \u043a\u043e\u0435\u0442\u043e \u0441\u0435 \u0435 \u0441\u043b\u0443\u0447\u0438\u043b\u043e \u0435, \u0447\u0435 \u0434\u043e\u043a\u0430\u0442\u043e parent-\u0430 \u0435 \u043f\u0440\u0430\u0432\u0435\u043b fork(), \u0442\u043e\u044f lock \u0433\u043e \u0435 \u0434\u044a\u0440\u0436\u0430\u043b \u043d\u044f\u043a\u043e\u0439, \u0438 child-\u0430 \u0440\u0435\u0430\u043b\u043d\u043e \u043d\u0435 \u043c\u043e\u0436\u0435 \u0434\u0430 \u043f\u0438\u043f\u043d\u0435 \u043a\u0430\u043a\u0432\u043e\u0442\u043e \u0438 \u0434\u0430 \u0435, \u0441\u0432\u044a\u0440\u0437\u0430\u043d\u043e \u0441 \u043d\u0435\u0433\u043e (\u043a\u043e\u0435\u0442\u043e \u0437\u043d\u0430\u0447\u0438 \u043d\u0438\u043a\u0430\u043a\u0432\u0438 reentrant \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0432 glibc-\u0442\u043e, \u043a\u0430\u043a\u0432\u0438\u0442\u043e \u043f\u0430 \u0432\u0441\u0438\u0447\u043a\u0438 \u043f\u043e\u043b\u0437\u0432\u0430\u0442 (\u0438 \u0431\u0438 \u0442\u0440\u044f\u0431\u0432\u0430\u043b\u043e \u0434\u0430 \u043f\u043e\u043b\u0437\u0432\u0430\u0442)). \u0412\u044a\u043f\u0440\u043e\u0441\u044a\u0442 \u0435, \u0447\u0435 \u043f\u043e \u043f\u0440\u0438\u043d\u0446\u0438\u043f \u0442\u043e\u0432\u0430 \u043d\u0435 \u0431\u0438 \u0442\u0440\u044f\u0431\u0432\u0430\u043b\u043e \u0434\u0430 \u0435 \u0432\u044a\u0437\u043c\u043e\u0436\u043d\u043e, \u0449\u043e\u0442\u043e \u043e\u043a\u043e\u043b\u043e fork() \u043d\u044f\u043c\u0430 \u043d\u0438\u0449\u043e, \u043a\u043e\u0435\u0442\u043e \u0434\u0430 \u0432\u0437\u0438\u043c\u0430 \u0442\u043e\u044f lock, \u0438 \u0431\u0438 \u0442\u0440\u044f\u0431\u0432\u0430\u043b\u043e glibc \u0434\u0430 \u0441\u0438 \u043e\u0441\u0432\u043e\u0431\u043e\u0436\u0434\u0430\u0432\u0430 lock-\u0430 \u043a\u0430\u0442\u043e \u0438\u0437\u043b\u0438\u0437\u0430 \u043e\u0442 \u0444\u0443\u043d\u043a\u0446\u0438\u0438\u0442\u0435 \u0441\u0438.<\/p>\n<p>\u041f\u044a\u0440\u0432\u043e\u043d\u0430\u0447\u0430\u043b\u043d\u043e\u0442\u043e \u043c\u0438 \u0438\u0434\u0438\u043e\u0442\u0441\u043a\u043e \u043f\u0440\u0435\u0434\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0431\u0435\u0448\u0435, \u0447\u0435 \u0432 signal handler-\u0430 \u043d\u0430 SIGCHLD multiprocessing \u043c\u043e\u0434\u0443\u043b\u0430 \u0441\u044a\u0437\u0434\u0430\u0432\u0430 \u043d\u043e\u0432\u0438\u0442\u0435 child-\u043e\u0432\u0435, \u0438 \u0442\u0430\u043a\u0430 \u0434\u043e\u043a\u0430\u0442\u043e \u043d\u0435\u0449\u043e \u0434\u0440\u0443\u0433\u043e \u0434\u044a\u0440\u0436\u0438 lock-\u0430 \u0438\u0434\u0432\u0430 \u0441\u0438\u0433\u043d\u0430\u043b, \u043f\u0440\u0430\u0432\u0438 \u0441\u0435 \u043d\u043e\u0432 \u043f\u0440\u043e\u0446\u0435\u0441 \u0438 \u0442\u043e\u0439 \u0433\u043e &#8220;\u043d\u0430\u0441\u043b\u0435\u0434\u044f\u0432\u0430&#8221; \u0437\u0430\u043a\u043b\u044e\u0447\u0435\u043d. \u0422\u043e\u0432\u0430 \u0431\u0435\u0448\u0435 \u0442\u0432\u044a\u0440\u0434\u0435 \u0433\u043b\u0443\u043f\u0430\u0432\u043e, \u0437\u0430 \u0434\u0430 \u0435 \u0438\u0441\u0442\u0438\u043d\u0430, \u0438 \u0441\u0435 \u043e\u043a\u0430\u0437\u0430, \u0447\u0435 \u043d\u0435 \u0435&#8230;<\/p>\n<p>\u041e\u043a\u043e\u043b\u043e \u0432\u044a\u043f\u0440\u043e\u0441\u0438\u0442\u0435 \u0441 lock-\u0430 \u0431\u044f\u0445 \u0441\u0442\u0438\u0433\u043d\u0430\u043b \u0441 \u0442\u044a\u0440\u0441\u0435\u043d\u0435 \u0434\u043e \u0434\u0432\u0435 \u043d\u0435\u0449\u0430 &#8211; <a href=\"https:\/\/github.com\/gperftools\/gperftools\/issues\/178\">issue 127 \u0432 gperftools  \u0438 <\/a><a href=\"https:\/\/bugs.debian.org\/cgi-bin\/bugreport.cgi?bug=657835\">Debian bug 657835<\/a>. \u041f\u044a\u0440\u0432\u043e\u0442\u043e \u043a\u0430\u0437\u0430, \u0447\u0435 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044a\u0442 \u043c\u0438 \u043c\u043e\u0436\u0435 \u0434\u0430 \u0435 \u043e\u0442 \u0434\u0440\u0443\u0433 lock, \u043a\u043e\u0439\u0442\u043e \u043d\u044f\u043a\u043e\u0439 \u0434\u0440\u0443\u0433 \u0434\u044a\u0440\u0436\u0438 \u043f\u0440\u0435\u0434\u0438 fork-\u0430 (\u043a\u043e\u0435\u0442\u043e \u043c\u0435 \u043d\u0430\u043a\u0430\u0440\u0430 \u0434\u0430 \u0441\u0435 \u0437\u0430\u0433\u043b\u0435\u0434\u0430\u043c \u043f\u043e-\u0432\u043d\u0438\u043c\u0430\u0442\u0435\u043b\u043d\u043e \u043a\u0430\u043a\u0432\u0438 lock-\u043e\u0432\u0435 \u0441\u0435 \u0434\u044a\u0440\u0436\u0430\u0442), \u0430 \u0432\u0442\u043e\u0440\u043e\u0442\u043e, \u0447\u0435 \u043a\u0430\u0442\u043e \u0446\u044f\u043b\u043e \u0430\u043a\u043e fork-\u0432\u0430\u0448 thread-\u043d\u0430\u0442\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435, \u043c\u043e\u0436\u0435 \u043f\u043e\u0441\u043b\u0435 \u0435\u0434\u0438\u043d\u0441\u0442\u0432\u0435\u043d\u043e \u0434\u0430 \u043f\u0440\u0430\u0432\u0438\u0448 execve(), \u0437\u0430\u0449\u043e\u0442\u043e \u0432\u0441\u0438\u0447\u043a\u043e \u0434\u0440\u0443\u0433\u043e \u043d\u0435 \u0435 \u044f\u0441\u043d\u043e \u043a\u043e\u043b\u043a\u043e \u0449\u0435 \u0440\u0430\u0431\u043e\u0442\u0438.<\/p>\n<p>\u0418 \u043d\u0430\u043a\u0440\u0430\u044f \u0441\u0435 \u043e\u043a\u0430\u0437\u0430, \u0447\u0435 \u0430\u043a\u043e \u0441\u0435 \u043f\u043e\u043b\u0437\u0432\u0430 multiprocessing \u043c\u043e\u0434\u0443\u043b\u0430, \u0442\u043e\u0439 \u043f\u0443\u0441\u043a\u0430 \u0432 \u0433\u043b\u0430\u0432\u043d\u0438\u044f \u043f\u0440\u043e\u0446\u0435\u0441 \u043d\u044f\u043a\u043e\u043b\u043a\u043e thread-\u0430, \u043a\u043e\u0438\u0442\u043e \u0434\u0430 \u0441\u0435 \u0437\u0430\u043d\u0438\u043c\u0430\u0432\u0430\u0442 \u0441\u044a\u0441 \u0441\u043b\u0435\u0434\u0435\u043d\u0435\u0442\u043e \u0438 \u043f\u0443\u0441\u043a\u0430\u043d\u0435\u0442\u043e \u043d\u0430 child-\u043e\u0432\u0435 \u0437\u0430 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0430. \u0422\u0430 \u0435\u0442\u043e \u043a\u0430\u043a\u0432\u043e \u0440\u0435\u0430\u043b\u043d\u043e \u0441\u0435 \u0441\u043b\u0443\u0447\u0432\u0430:<\/p>\n<p>&#8211; \u043d\u044f\u043a\u043e\u0439 child \u0441\u0438 \u0438\u0437\u0440\u0430\u0431\u043e\u0442\u0432\u0430 \u043d\u0443\u0436\u043d\u0438\u044f \u0431\u0440\u043e\u0439 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 \u0438 \u0438\u0437\u043b\u0438\u0437\u0430<br \/>\n&#8211; parent-\u0430 \u043f\u043e\u043b\u0443\u0447\u0430\u0432\u0430 SIGCHLD \u0438 \u0441\u0438 \u043e\u0442\u0431\u0435\u043b\u044f\u0437\u0432\u0430, \u0447\u0435 \u0442\u0440\u044f\u0431\u0432\u0430 \u0434\u0430 \u0432\u0438\u0434\u0438 \u043a\u0430\u043a\u0432\u043e \u0441\u0442\u0430\u0432\u0430<br \/>\n&#8211; \u0433\u043b\u0430\u0432\u043d\u0438\u044f thread \u043d\u0430 parent-\u0430 \u0442\u0440\u044a\u0433\u0432\u0430 \u0434\u0430 \u0441\u044a\u0431\u0438\u0440\u0430 \u0441\u043f\u0438\u0441\u044a\u043a\u0430 \u0431\u0430\u0437\u0438, \u0438 \u0432\u0438\u043a\u0430 \u0432 \u043d\u044f\u043a\u0430\u043a\u044a\u0432 \u043c\u043e\u043c\u0435\u043d\u0442 _nss_files_gethostbyname4_r, \u043a\u043e\u0439\u0442\u043e \u0432\u0437\u0438\u043c\u0430 lock-\u0430;<br \/>\n&#8211; \u043f\u043e \u0442\u043e\u0432\u0430 \u0432\u0440\u0435\u043c\u0435 \u0434\u0440\u0443\u0433\u0438\u044f thread \u043a\u0430\u0437\u0432\u0430 &#8220;\u0430, \u043d\u044f\u043c\u0430\u043c \u0434\u043e\u0441\u0442\u0430\u0442\u044a\u0447\u043d\u043e child-\u043e\u0432\u0435, fork()&#8221;<br \/>\n&#8211; profit.<\/p>\n<p>\u0422\u0435\u043a\u0443\u0449\u043e\u0442\u043e \u043c\u0438 \u0433\u043b\u0443\u043f\u0430\u0432\u043e \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u0435 \u0434\u0430 \u043d\u0435 \u043f\u0440\u0430\u0432\u044f \u043d\u0438\u0449\u043e \u0432 \u0433\u043b\u0430\u0432\u043d\u0438\u044f thread, \u043a\u043e\u0435\u0442\u043e \u043c\u043e\u0436\u0435 \u0434\u0430 \u0432\u0437\u0438\u043c\u0430 \u0442\u043e\u044f lock \u0438 \u0434\u0430 \u0441\u0435 \u043d\u0430\u0434\u044f\u0432\u0430\u043c, \u0447\u0435 \u043d\u044f\u043c\u0430 \u043e\u0449\u0435 \u043d\u044f\u043a\u043e\u0439 \u0442\u0430\u043a\u044a\u0432. \u0411\u044a\u0434\u0435\u0449\u043e\u0442\u043e \u043c\u0438 \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u0435 \u0438\u043b\u0438 \u0434\u0430 \u0433\u043e \u043f\u0438\u0448\u0430 \u043d\u0430 python3 \u0441 \u043d\u044f\u043a\u043e\u0439 \u0434\u0440\u0443\u0433 \u043c\u043e\u0434\u0443\u043b \u043f\u043e \u0442\u0435\u043c\u0430\u0442\u0430, \u0438\u043b\u0438 \u043d\u0430 go (\u043a\u043e\u0435\u0442\u043e \u0449\u0435 \u0442\u0440\u044f\u0431\u0432\u0430 \u0434\u0430 \u043d\u0430\u0443\u0447\u0430).<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u0412\u0441\u0435\u043a\u0438 \u0434\u0435\u043d \u0441\u0435 \u0443\u0431\u0435\u0436\u0434\u0430\u0432\u0430\u043c, \u0447\u0435 \u043d\u0438\u0449\u043e \u043d\u0435 \u0440\u0430\u0431\u043e\u0442\u0438. \u041e\u0442\u043a\u0440\u0438\u0445 \u0437\u0430\u0431\u0430\u0432\u0435\u043d \u043f\u0440\u043e\u0431\u043b\u0435\u043c \u0441 python \u0438 multiprocessing, \u043a\u043e\u0439\u0442\u043e \u0432 \u043c\u043e\u043c\u0435\u043d\u0442\u0430 \u043e\u0449\u0435 \u043d\u0435 \u043c\u043e\u0433\u0430 \u0434\u0430 \u0440\u0435\u0448\u0430 \u0447\u0438\u0439 \u043f\u0440\u043e\u0431\u043b\u0435\u043c \u0435 (\u0432 \u043a\u0440\u0430\u0439\u043d\u0430 \u0441\u043c\u0435\u0442\u043a\u0430 \u0449\u0435 \u0441\u0435 \u043e\u043a\u0430\u0436\u0435 \u043c\u043e\u0439). \u041e\u0442\u043d\u0435 \u043c\u0438 \u043f\u0440\u0438\u043b\u0438\u0447\u043d\u043e \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0432\u0440\u0435\u043c\u0435 \u0434\u0430 \u0433\u043e \u0445\u0432\u0430\u043d\u0430 \u0438 \u0441\u0438 \u0441\u0442\u0440\u0443\u0432\u0430 \u0434\u0430 \u0433\u043e \u0440\u0430\u0437\u043a\u0430\u0436\u0430. \u041c\u0430\u043b\u043a\u043e \u043f\u0440\u0435\u0434\u0438\u0441\u0442\u043e\u0440\u0438\u044f: \u043f\u043e\u043b\u0437\u0432\u0430\u043c\u0435 influxdb, \u0432 \u043a\u043e\u0435\u0442\u043e \u0442\u044a\u043f\u0447\u0435\u043c \u0431\u0430\u044f [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[16],"class_list":["post-3384","post","type-post","status-publish","format-standard","hentry","category-general","tag-16"],"_links":{"self":[{"href":"https:\/\/vasil.ludost.net\/blog\/index.php?rest_route=\/wp\/v2\/posts\/3384","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/vasil.ludost.net\/blog\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/vasil.ludost.net\/blog\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/vasil.ludost.net\/blog\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/vasil.ludost.net\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=3384"}],"version-history":[{"count":0,"href":"https:\/\/vasil.ludost.net\/blog\/index.php?rest_route=\/wp\/v2\/posts\/3384\/revisions"}],"wp:attachment":[{"href":"https:\/\/vasil.ludost.net\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=3384"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/vasil.ludost.net\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=3384"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/vasil.ludost.net\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=3384"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}