<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title type="html"><![CDATA[Серый форум &mdash; VBS: Запуск нескольких функций одновременно]]></title>
	<link rel="self" href="https://forum.script-coding.com/extern.php?action=feed&amp;tid=9366&amp;type=atom" />
	<updated>2014-03-20T19:56:49Z</updated>
	<generator>PunBB</generator>
	<id>https://forum.script-coding.com/viewtopic.php?id=9366</id>
		<entry>
			<title type="html"><![CDATA[Re: VBS: Запуск нескольких функций одновременно]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=81036#p81036" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>wildwolf007 пишет:</cite><blockquote><p>и в эту переменную или массив могли записывать данные все процессы?</p></blockquote></div><p>Посмотрите выше, я в #23 привел ссылку на пост, пример с обменом данными между процессами прикреплен к нему в файле.</p>]]></content>
			<author>
				<name><![CDATA[omegastripes]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=29228</uri>
			</author>
			<updated>2014-03-20T19:56:49Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=81036#p81036</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: VBS: Запуск нескольких функций одновременно]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=81030#p81030" />
			<content type="html"><![CDATA[<p>А возможно ли обмениваться между данными процессами. Например создать переменную или массив и в эту переменную или массив могли записывать данные все процессы?</p>]]></content>
			<author>
				<name><![CDATA[wildwolf007]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=30994</uri>
			</author>
			<updated>2014-03-20T17:39:35Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=81030#p81030</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: VBS: Запуск нескольких функций одновременно]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=80840#p80840" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>wildwolf007 пишет:</cite><blockquote><p>Скажите имена переменных одни и те же они не будут пересекаться в разных процессах?</p></blockquote></div><p>Если из одного скрипта просто запускаются несколько процессов, выполняющих скрипты, то связи между ними никакой нет, ничего не будет пересекаться. Если же организован определенный обмен данными между скриптами - то однозначный ответ можно дать, только посмотрев код сценария.</p>]]></content>
			<author>
				<name><![CDATA[omegastripes]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=29228</uri>
			</author>
			<updated>2014-03-15T13:46:45Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=80840#p80840</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: VBS: Запуск нескольких функций одновременно]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=80819#p80819" />
			<content type="html"><![CDATA[<p>Скажите имена переменных одни и те же они не будут пересекаться в разных процессах?</p>]]></content>
			<author>
				<name><![CDATA[wildwolf007]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=30994</uri>
			</author>
			<updated>2014-03-15T10:25:59Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=80819#p80819</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: VBS: Запуск нескольких функций одновременно]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=80796#p80796" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>wildwolf007 пишет:</cite><blockquote><p>Есть скрипт в нем запускается функция с параметром1, возможно ли не дожидаясь завершения функции с параметром1 запустить функцию с параметром2.</p></blockquote></div><p>Вероятно, вот это подойдет <a href="http://forum.script-coding.com/viewtopic.php?pid=74388#p74388">http://forum.script-coding.com/viewtopi … 388#p74388</a></p>]]></content>
			<author>
				<name><![CDATA[omegastripes]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=29228</uri>
			</author>
			<updated>2014-03-14T18:40:57Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=80796#p80796</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: VBS: Запуск нескольких функций одновременно]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=80792#p80792" />
			<content type="html"><![CDATA[<p>Оставим для чего? <img src="//forum.script-coding.com/img/smilies/smile.png" width="15" height="15" /></p>]]></content>
			<author>
				<name><![CDATA[wildwolf007]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=30994</uri>
			</author>
			<updated>2014-03-14T12:50:08Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=80792#p80792</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: VBS: Запуск нескольких функций одновременно]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=80791#p80791" />
			<content type="html"><![CDATA[<p>Ладно, оставим.</p>]]></content>
			<author>
				<name><![CDATA[alexii]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=1844</uri>
			</author>
			<updated>2014-03-14T12:26:53Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=80791#p80791</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: VBS: Запуск нескольких функций одновременно]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=80790#p80790" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>alexii пишет:</cite><blockquote><div class="quotebox"><blockquote><p>Если не будет&nbsp; этой строки</p></blockquote></div><p>Причём ту «эта строка»? Я спрашивал в чём смысл:<br /></p><div class="codebox"><pre><code>set WshExec_1 = WshShell.Exec(ProcessClients)
WshExec_1.Terminate()</code></pre></div><p>— запустили процесс и тут же его убили?</p></blockquote></div><p>Статусу процесса .Status был присвоен 1. Можно сказать инициализировал процесс.</p>]]></content>
			<author>
				<name><![CDATA[wildwolf007]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=30994</uri>
			</author>
			<updated>2014-03-14T11:45:37Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=80790#p80790</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: VBS: Запуск нескольких функций одновременно]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=80789#p80789" />
			<content type="html"><![CDATA[<p>Спасибо. А я сегодня весь день убил пока разобрался, а оказывается уже все давно изобретено.</p>]]></content>
			<author>
				<name><![CDATA[wildwolf007]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=30994</uri>
			</author>
			<updated>2014-03-14T11:42:11Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=80789#p80789</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: VBS: Запуск нескольких функций одновременно]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=80788#p80788" />
			<content type="html"><![CDATA[<div class="quotebox"><blockquote><p>Если не будет&nbsp; этой строки</p></blockquote></div><p>Причём ту «эта строка»? Я спрашивал в чём смысл:<br /></p><div class="codebox"><pre><code>set WshExec_1 = WshShell.Exec(ProcessClients)
WshExec_1.Terminate()</code></pre></div><p>— запустили процесс и тут же его убили?</p>]]></content>
			<author>
				<name><![CDATA[alexii]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=1844</uri>
			</author>
			<updated>2014-03-14T11:41:00Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=80788#p80788</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: VBS: Запуск нескольких функций одновременно]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=80787#p80787" />
			<content type="html"><![CDATA[<p>Основная идея:<br />1.Организутся массив из N -элементов - максимальное число обрабатываемых процессов<br />2.элементу массива присваиваем&nbsp; &nbsp;wshShell.Exec(CmdLine)<br />&nbsp; &nbsp; процесс выполняется в фоновом режиме<br />3. Контролируем&nbsp; выполнение.<br />4. Если процесс закончился читаем результат <br />5. Запускаем следущую команду. пп 2.</p><p>Идеи с этих статей я использовал когда то в своем копировщике (Jscript). <br />У меня было 370 входных папок,140 выходных разбитых на 30 потоков с разной величиной паузы. <br />Одновременно работало не более 10 процессов.</p>]]></content>
			<author>
				<name><![CDATA[badik]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=21834</uri>
			</author>
			<updated>2014-03-14T11:35:53Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=80787#p80787</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: VBS: Запуск нескольких функций одновременно]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=80786#p80786" />
			<content type="html"><![CDATA[<p>Прошу прощения, а можно пару комментариев по материалам которые Вы показываете? По коду?<br />В частности какие данные обрабатываются?</p>]]></content>
			<author>
				<name><![CDATA[wildwolf007]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=30994</uri>
			</author>
			<updated>2014-03-14T11:17:04Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=80786#p80786</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: VBS: Запуск нескольких функций одновременно]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=80785#p80785" />
			<content type="html"><![CDATA[<p><a href="http://www.mpsge.org/runjobs/">runjobs: An XP Automation Tool for Parallel Processing of GAMS Jobs </a></p>]]></content>
			<author>
				<name><![CDATA[badik]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=21834</uri>
			</author>
			<updated>2014-03-14T11:10:22Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=80785#p80785</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: VBS: Запуск нескольких функций одновременно]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=80784#p80784" />
			<content type="html"><![CDATA[<p><a href="http://www.osp.ru/win2000/2005/06/380035/">Оптимизация сценариев</a><br />Из своего архива:<br /></p><div class="codebox"><pre><code>&#039;Файл tasks.vbs
Option Explicit
Const ForReading = 1
Const fsuffix = &quot;_failed&quot;
Const ScriptLimit = 50, TimeOut = 15
Dim Args, oShell, fso, oHostFile, oFailHostFile
Dim aHostList(), aScripts(), aHosts(), aTimes()
Dim strScript, strHostFile, strFailHostFile, strArguments

Sub UsageBox
MsgBox &quot;General syntax:&quot; &amp; vbCrLf &amp; _
&quot;tasks.vbs &lt;script_name.extension&gt; &lt;hosts file&gt; [list of arguments] ... &quot;, _
vbOKOnly + vbInformation
End Sub

Sub ErrorBox
MsgBox &quot;Error &quot; &amp; Err.Number &amp; &quot;: &quot; &amp; Err.Description, vbOKOnly + vbExclamation
Err.Clear
End Sub

Sub DoneBox
MsgBox &quot;All done! &quot;, vbOKOnly + vbInformation
End Sub

Sub LogFail(strHost)
oFailHostFile.WriteLine strHost
End Sub

Sub RunTasks
Dim i, n, bEmpty, intMaxScript, intMaxHostList
intMaxScript = ScriptLimit - 1
intMaxHostList = UBound(aHostList)
If intMaxHostList &lt; intMaxScript Then intMaxScript = intMaxHostList
ReDim aScripts(intMaxHostList), aHosts(intMaxHostList), aTimes(intMaxHostList)
n = 0
For i = 0 To intMaxScript
  aTimes(i) = 0
Next
bEmpty = True
Do
If Not bEmpty Then Wscript.Sleep 1000
bEmpty = True
  For i = 0 To intMaxScript
    If aTimes(i) = 0 Then
      If n &lt;= intMaxHostList Then
        aTimes(i) = 1
        aHosts(i) = aHostList(n)
        Set aScripts(i) = oShell.Exec(&quot;wscript.exe &quot; &amp; strScript &amp; &quot; &quot; &amp; _
                          aHosts(i) &amp; strArguments)
        n = n + 1
      End If
    ElseIf aTimes(i) = TimeOut Then
      If aScripts(i).Status = 0 Then aScripts(i).Terminate
      LogFail(aHosts(i))
      aTimes(i) = 0
    Else
      If aScripts(i).Status = 0 Then
        aTimes(i) = aTimes(i) + 1
      Else
        If aScripts(i).ExitCode &lt;&gt; 0 Then LogFail(aHosts(i))
        aTimes(i) = 0
      End If
    End If
    If aTimes(i) &gt; 0 Then bEmpty = False
  Next 
Loop Until bEmpty
End Sub

Sub ProcFiles
Dim i, strHost, errRun
On Error Resume Next
errRun = oShell.Run(&quot;wscript.exe &quot; &amp; strScript, 0, True)
If errRun = 9 Then
  Set fso = CreateObject(&quot;Scripting.FileSystemObject&quot;)
  Set oHostFile = fso.OpenTextFile(strHostFile, ForReading, False)
  If Err.Number = 0 Then
    Set oFailHostFile = fso.CreateTextFile(strFailHostFile, True)
    If Err.Number = 0 Then
      i = 0
      Do Until oHostFile.AtEndOfStream
        strHost = oHostFile.ReadLine
        If Len(strHost) &gt; 0 Then
          ReDim Preserve aHostList(i)
          aHostList(i) = strHost
          i = i + 1
        End If
      Loop
      oHostFile.Close
      If i &gt; 0 Then RunTasks
      oFailHostFile.Close
      DoneBox
    Else
      ErrorBox
    End If
  Else
    ErrorBox
  End If 
End If
End Sub

Dim i, lenH, dotH
Set Args = Wscript.Arguments
If Args.Count &gt; 1 Then 
  strScript = Args(0)
  strHostFile = Args(1)
  strArguments = &quot;&quot;
  For i = 2 To Args.Count - 1
    strArguments = strArguments &amp; &quot; &quot; &amp; Args(i)
  Next
  dotH = InStrRev(strHostFile, &quot;.&quot;)
  lenH = Len(strHostFile)
  If dotH = 0 Then
    strFailHostFile = strHostFile &amp; fsuffix
  Else
    strFailHostFile = Left(strHostFile, dotH - 1) &amp; fsuffix &amp; _
                      Right(strHostFile, lenH - dotH +1)
  End If
  Set oShell = WScript.CreateObject(&quot;WScript.Shell&quot;)
  ProcFiles
Else
  UsageBox
End If</code></pre></div>]]></content>
			<author>
				<name><![CDATA[badik]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=21834</uri>
			</author>
			<updated>2014-03-14T10:58:12Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=80784#p80784</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: VBS: Запуск нескольких функций одновременно]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=80783#p80783" />
			<content type="html"><![CDATA[<p>Допустим поступил какой-то большой запрос на который нужно потратить N количество времени благодаря Status можно определить какой процесс сейчас свободен и тогда данному процессу поручить выполнение этого запроса.</p><p>Пока данный запрос выполняется ему проставляется статус 0 как закончит выполнятся проставится статус 1</p><p>Если в процессе выполнения поступит так же большой запрос, то занятому процессу данный запрос не будет передан, будет передан свободному процессу или будет ждать пока какой-то процесс освободится.</p><p>Если я этого не сделаю вначале то у меня данный статус не будет определен.</p><p>Фух вроде объяснил.</p>]]></content>
			<author>
				<name><![CDATA[wildwolf007]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=30994</uri>
			</author>
			<updated>2014-03-14T10:44:00Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=80783#p80783</id>
		</entry>
</feed>
